Ver código fonte

Merge remote-tracking branch 'origin/developer' into developer

huangzhiguo 1 ano atrás
pai
commit
fc9988947c
50 arquivos alterados com 1772 adições e 2331 exclusões
  1. 26 25
      src/main/java/com/caimei/modules/baike/service/CmBaikeProductService.java
  2. 0 1
      src/main/java/com/caimei/modules/hehe/service/CmHeheUserService.java
  3. 2 24
      src/main/java/com/caimei/modules/info/service/InfoService.java
  4. 1 1
      src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java
  5. 0 30
      src/main/java/com/caimei/modules/order/service/NewOrderService.java
  6. 9 0
      src/main/java/com/caimei/modules/project/model/ServiceProviderModel.java
  7. 1 0
      src/main/java/com/caimei/modules/sys/utils/SMSUtils.java
  8. 3 0
      src/main/java/com/caimei/modules/user/dao/CmSpDao.java
  9. 0 8
      src/main/java/com/caimei/modules/user/dao/CmUserDao.java
  10. 3 3
      src/main/java/com/caimei/modules/user/dao/NewCmClubDao.java
  11. 19 410
      src/main/java/com/caimei/modules/user/entity/CmUser.java
  12. 40 391
      src/main/java/com/caimei/modules/user/entity/NewCmClub.java
  13. 39 1
      src/main/java/com/caimei/modules/user/entity/NewCmSp.java
  14. 0 10
      src/main/java/com/caimei/modules/user/service/ClubTemporaryService.java
  15. 4 0
      src/main/java/com/caimei/modules/user/service/CmSpService.java
  16. 0 26
      src/main/java/com/caimei/modules/user/service/CmUserService.java
  17. 6 0
      src/main/java/com/caimei/modules/user/service/NewCmClubService.java
  18. 2 2
      src/main/java/com/caimei/modules/user/utils/UserUtils.java
  19. 2 5
      src/main/java/com/caimei/modules/user/web/CmSpController.java
  20. 0 8
      src/main/java/com/caimei/modules/user/web/CmUserOrganizeController.java
  21. 4 282
      src/main/java/com/caimei/modules/user/web/NewCmClubController.java
  22. 15 109
      src/main/java/com/caimei/modules/user/web/NewCmShopController.java
  23. 31 40
      src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java
  24. 163 14
      src/main/java/com/caimei/modules/user/web/newUser/SpController.java
  25. 78 0
      src/main/java/com/caimei/modules/utils/MessageUtil.java
  26. 58 0
      src/main/java/com/caimei/modules/utils/RequestUtil.java
  27. 64 1
      src/main/java/com/caimei/modules/utils/message/InsideMessage.java
  28. 1 1
      src/main/java/com/caimei/modules/weisha/dao/CmMallOrganizeDao.java
  29. 2 2
      src/main/java/com/caimei/modules/weisha/service/CmMallOrganizeService.java
  30. 0 21
      src/main/java/com/caimei/modules/weisha/web/CmOrganizeClubController.java
  31. 2 1
      src/main/resources/config/dev/caimei.properties
  32. 0 1
      src/main/resources/mappings/modules/order/ShopOrderMapper.xml
  33. 49 2
      src/main/resources/mappings/modules/user/CmSpMapper.xml
  34. 329 406
      src/main/resources/mappings/modules/user/CmUserMapper.xml
  35. 146 7
      src/main/resources/mappings/modules/user/NewCmClubMapper.xml
  36. 0 1
      src/main/resources/mappings/modules/weisha/CmMallOrganizeMapper.xml
  37. 0 492
      src/main/webapp/WEB-INF/views/modules/miniprogram/cmMiniProgramUserForm.jsp
  38. 3 1
      src/main/webapp/WEB-INF/views/modules/serviceteam/cmServiceteamRoleForm.jsp
  39. 4 2
      src/main/webapp/WEB-INF/views/modules/serviceteam/cmServiceteamRoleList.jsp
  40. 1 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp
  41. 1 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyStatisticsList.jsp
  42. 267 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpClubTrackList.jsp
  43. 2 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpForm.jsp
  44. 2 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpList.jsp
  45. 246 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpLivelyClubFrom.jsp
  46. 139 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpLivelyClubList.jsp
  47. 3 1
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpTeamList.jsp
  48. BIN
      src/main/webapp/static/images/left.png
  49. BIN
      src/main/webapp/static/images/right.png
  50. 5 2
      src/test/java/com/caimei/info/InfoTest.java

+ 26 - 25
src/main/java/com/caimei/modules/baike/service/CmBaikeProductService.java

@@ -12,6 +12,7 @@ import com.caimei.modules.basesetting.dao.KeywordDao;
 import com.caimei.modules.hehe.util.UploadPicUtils;
 import com.caimei.modules.info.entity.Info;
 import com.caimei.modules.order.utils.OSSUtils;
+import com.caimei.modules.utils.MessageUtil;
 import com.caimei.modules.utils.RequestUtil;
 import com.caimei.modules.utils.message.InsideMessage;
 import com.caimei.modules.utils.message.MessageModel;
@@ -178,7 +179,7 @@ public class CmBaikeProductService extends CrudService<CmBaikeProductDao, CmBaik
                                 .reasonContent(cmBaikeProduct.getFailReason()));
 
             }
-            sendExamine(insideMessageMessageModel);
+            MessageUtil.sendMessage(insideMessageMessageModel);
         }
         // 标签
         String[] labelIds = StringUtils.split(cmBaikeProduct.getLabelIds(), ",");
@@ -280,29 +281,29 @@ public class CmBaikeProductService extends CrudService<CmBaikeProductDao, CmBaik
 //		});
     }
 
-    private void sendExamine(MessageModel<InsideMessage> model) {
-        StringBuilder map = new StringBuilder("{ \"code\": \"WEB_INSIDE_MESSAGE\"," +
-                "\"mqInfo\": {\"topic\": \"MessageLine\",\"delay\": 3,\"async\":0}," +
-                "\"info\": ");
-        map.append("{ \"content\": \"" + model.info().content() + "\"" +
-                ",\"shopMessType\":" + model.info().shopMessType() +
-                ",\"userType\":" + model.info().userType() +
-                ",\"messageType\":" + model.info().messageType());
-        map.append(",\"shopId\": " + model.info().shopId());
-        if (6 != model.info().shopMessType()) {
-            map.append(",\"reasonContent\":\"" + model.info().reasonContent() + "\"");
-        }
-        map.append("}}");
-        try {
-            String post = RequestUtil.httpPost(Global.getConfig("caimei.core") + "/tools/message/send", String.valueOf(map));
-            if (null==post){
-                throw new Exception();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("审批消息推送失败>>>"+e);
-        }
-    }
+//    private void sendExamine(MessageModel<InsideMessage> model) {
+//        StringBuilder map = new StringBuilder("{ \"code\": \"WEB_INSIDE_MESSAGE\"," +
+//                "\"mqInfo\": {\"topic\": \"MessageLine\",\"delay\": 3,\"async\":0}," +
+//                "\"info\": ");
+//        map.append("{ \"content\": \"" + model.info().content() + "\"" +
+//                ",\"shopMessType\":" + model.info().shopMessType() +
+//                ",\"userType\":" + model.info().userType() +
+//                ",\"messageType\":" + model.info().messageType());
+//        map.append(",\"shopId\": " + model.info().shopId());
+//        if (6 != model.info().shopMessType()) {
+//            map.append(",\"reasonContent\":\"" + model.info().reasonContent() + "\"");
+//        }
+//        map.append("}}");
+//        try {
+//            String post = RequestUtil.httpPost(Global.getConfig("caimei.core") + "/tools/message/send", String.valueOf(map));
+//            if (null==post){
+//                throw new Exception();
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            logger.error("审批消息推送失败>>>"+e);
+//        }
+//    }
 
     private void saveTime(CmBaikeProduct cmBaikeProduct) {
         Integer marketYear = cmBaikeProduct.getMarketYear();
@@ -530,4 +531,4 @@ public class CmBaikeProductService extends CrudService<CmBaikeProductDao, CmBaik
             }
         }
     }
-}
+}

+ 0 - 1
src/main/java/com/caimei/modules/hehe/service/CmHeheUserService.java

@@ -63,7 +63,6 @@ public class CmHeheUserService extends CrudService<CmHeheUserDao, CmHeheUser> {
             String currentTime = simpleDateFormat.format(new Date());
             user.setPassword("HeHe");
             //6:呵呵商城用户
-            user.setUserPermission(6);
             user.setUserIdentity(6);
             user.setRegisterUserTypeID("6");
             user.setRegisterTime(currentTime);

+ 2 - 24
src/main/java/com/caimei/modules/info/service/InfoService.java

@@ -9,6 +9,7 @@ import com.caimei.modules.basesetting.dao.KeywordDao;
 import com.caimei.modules.hehe.entity.cmHeHeUserActivity;
 import com.caimei.modules.live.entity.NewPageLive;
 import com.caimei.modules.sys.utils.UploadImageUtils;
+import com.caimei.modules.utils.MessageUtil;
 import com.caimei.modules.utils.RequestUtil;
 import com.caimei.modules.utils.message.InsideMessage;
 import com.caimei.modules.utils.message.MessageModel;
@@ -246,7 +247,7 @@ public class InfoService extends CrudService<InfoDao, Info> {
                                 .reasonContent(info.getFailReason()));
 
             }
-            sendExamine(insideMessageMessageModel);
+            MessageUtil.sendMessage(insideMessageMessageModel);
         }
         super.save(info);
 
@@ -261,29 +262,6 @@ public class InfoService extends CrudService<InfoDao, Info> {
         infoDao.insertInfoPage(info.getId(), sp);
     }
 
-    private void sendExamine(MessageModel<InsideMessage> model) {
-        StringBuilder map = new StringBuilder("{ \"code\": \"WEB_INSIDE_MESSAGE\"," +
-                "\"mqInfo\": {\"topic\": \"MessageLine\",\"delay\": 3,\"async\":0}," +
-                "\"info\": ");
-        map.append("{ \"content\": \"" + model.info().content() + "\"" +
-                ",\"shopMessType\":" + model.info().shopMessType() +
-                ",\"userType\":" + model.info().userType() +
-                ",\"messageType\":" + model.info().messageType());
-        map.append(",\"shopId\": " + model.info().shopId());
-        if (8 != model.info().shopMessType()) {
-            map.append(",\"reasonContent\":\"" + model.info().reasonContent() + "\"");
-        }
-        map.append("}}");
-        try {
-            String post = RequestUtil.httpPost(Global.getConfig("caimei.core") + "/tools/message/send", String.valueOf(map));
-            if (null==post){
-                throw new Exception();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("审批消息推送失败>>>"+e);
-        }
-    }
 
     @Transactional(readOnly = false)
     public void delete(Info info) {

+ 1 - 1
src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java

@@ -1009,7 +1009,7 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
         orderVo.setP5_amount(money);
         Map<String, String> map = MyBeanUtils.convertBean(orderVo, new LinkedHashMap());
         String oriMessage = MyBeanUtils.getSignedByPresetParameter(map, AppPayRefundOrderVo.NEED_SIGN_PARAMS);
-        oriMessage += Constant.SAOMA;
+//        oriMessage += Constant.SAOMA;
         String sign = Disguiser.disguiseMD5(oriMessage.trim());
         logger.info("签名串:" + sign);
         map.put("sign", sign);

+ 0 - 30
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -1806,36 +1806,6 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
         messageCenter.setTime(current);
         messageCenterDao.addMessageCenter(messageCenter);
 
-
-        //取消订单短信推送(取消订单推送)
-        /*try {
-            if (user != null && StringUtils.isNotBlank(user.getBindMobile()) && "0".equals(order.getRebateFlag())) {
-                String wwwServer = Global.getConfig("wwwServer");
-                String shortLink = getShortLink(8, 11, wwwServer + "user/order/detail.html?orderId=" + orderID);
-                String content = "您已成功取消订单(订单编号:" + order.getOrderNo() + "),订单金额¥" + order.getPayTotalFee() + "。您可关注采美公众号或者访问采美微信小程序和网站查看订单。" +
-                        "平台公众号:微信搜索“采美365网”; 微信小程序:微信搜索“采美采购商城”;网址:www.caimei365.com/t/" + shortLink;
-                boolean sendSms = getSendSms(11, user.getBindMobile(), content);
-                if (!sendSms) {
-                    logger.info("取消订单推送失败,订单id>>>>" + orderID);
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }*/
-        //客服确认注册机构,一天内取消有效
-        if (user != null && "94".equals(user.getClubStatus())) {
-            Integer userId = user.getUserID();
-            Date confirmTime = cmUserDao.findByConfirmTime(userId);
-            if (confirmTime != null) {
-                Calendar calendar = Calendar.getInstance();
-                calendar.setTime(confirmTime);
-                calendar.add(Calendar.DATE, 1);
-                if (calendar.getTime().compareTo(new Date()) > 0) {
-                    cmUserDao.updateByClubStatus(93, userId);
-                    newCmClubDao.updateByStatus(93, userId);
-                }
-            }
-        }
         //优惠券退回
         if (order.getCouponAmount() > 0 && !"0".equals(order.getStatus())) {
             CmCouponOrderRecord couponRecord = newOrderDao.findOrderCouponRecord(order.getOrderID());

+ 9 - 0
src/main/java/com/caimei/modules/project/model/ServiceProviderModel.java

@@ -10,9 +10,18 @@ public class ServiceProviderModel extends DataEntity<ServiceProviderModel> {
     private Integer serviceProviderID;
     private String name;
     private Integer userID;
+    private String contractMobile;
     private Integer mainServiceProviderID;
     private Integer teamFlag;  //协销小组编辑页面回显标记,后台取数据的时候给1
 
+    public String getContractMobile() {
+        return contractMobile;
+    }
+
+    public void setContractMobile(String contractMobile) {
+        this.contractMobile = contractMobile;
+    }
+
     public Integer getServiceProviderID() {
         return serviceProviderID;
     }

+ 1 - 0
src/main/java/com/caimei/modules/sys/utils/SMSUtils.java

@@ -63,6 +63,7 @@ public class SMSUtils {
         list.add("15827317748");
         list.add("18476937515");
         list.add("18175515644");
+        list.add("17708413951");
         if (list.contains(mobile) || wwwServer.contains("www.caimei365.com")) {
             String coreServer = Global.getConfig("caimei.core");
             RestTemplate restTemplate = new RestTemplate();

+ 3 - 0
src/main/java/com/caimei/modules/user/dao/CmSpDao.java

@@ -7,6 +7,7 @@ import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户模块重构-协销人员管理DAO接口
@@ -24,6 +25,8 @@ public interface CmSpDao extends CrudDao<NewCmSp> {
 
     NewCmSp findByUserId(Integer userId);
 
+    Map<String, Object> findSpUserLoginSum(@Param("spID")String spID);
+
     List<CmSaleMan> findTeam();
 
     void choseManager(Integer serviceProviderID);

+ 0 - 8
src/main/java/com/caimei/modules/user/dao/CmUserDao.java

@@ -32,8 +32,6 @@ public interface CmUserDao extends CrudDao<CmUser> {
      */
     List<CmUser> findByCompanyUserID(Integer companyUserID);
 
-    int updateEmployeeStatus(@Param("userPermission") Integer userPermission, @Param("clubStatus") String clubStatus, @Param("manufacturerStatus") String manufacturerStatus, @Param("tipStatus") String tipStatus, @Param("companyUserID") Integer companyUserID);
-
     void updateUserStatus(@Param("manufacturerStatus") String manufacturerStatus, @Param("userID") Integer userID, @Param("validFlag") String validFlag);
 
     /**
@@ -43,8 +41,6 @@ public interface CmUserDao extends CrudDao<CmUser> {
      */
     void updateUserInfo(@Param("realName") String realName, @Param("name") String name, @Param("userName") String userName, @Param("bindMobile") String bindMobile, @Param("email") String email, @Param("userID") Integer userID);
 
-    int updateEmployeePermission(@Param("userPermission") Integer userPermission, @Param("companyUserID") Integer companyUserID);
-
     CmUser findUserByMobile(@Param("mobile") String mobile);
 
     List<CmUser> findListBuyBindMobile(CmUser cmUser);
@@ -69,10 +65,6 @@ public interface CmUserDao extends CrudDao<CmUser> {
 
     CmUser findUserByOrganizeId(Integer organizeId);
 
-    void updateByClubStatus(@Param("clubStatus") int clubStatus, @Param("confirmUserId") Integer confirmUserId);
-
-    Date findByConfirmTime(Integer userId);
-
     Integer findUserBeans(Integer userId);
 
     CmOrganValueSystem selOrgan(Integer userId);

+ 3 - 3
src/main/java/com/caimei/modules/user/dao/NewCmClubDao.java

@@ -4,6 +4,7 @@ import com.caimei.modules.consult.entity.type.CmConsulttype;
 import com.caimei.modules.project.model.ServiceProviderModel;
 import com.caimei.modules.user.entity.*;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
+import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
 import org.apache.ibatis.annotations.Param;
 
@@ -18,6 +19,8 @@ import java.util.List;
 @MyBatisDao
 public interface NewCmClubDao extends CrudDao<NewCmClub> {
 
+    List<NewCmClub> findProviderList(NewCmClub userClub);
+
     List<NewCmClub> findClubById(Integer clubID);
 
     List<NewCmClub> textUserValue();
@@ -29,9 +32,6 @@ public interface NewCmClubDao extends CrudDao<NewCmClub> {
     List<ServiceProviderModel> spNameList();
 
     void insertBeansHistory(UserBeansHistory beansHistory);
-
-    void updateByStatus(@Param("clubStatus") int clubStatus, @Param("confirmUserId") Integer confirmUserId);
-
     List<CmClubRemarks> findRemarksList(CmClubRemarks cmClubRemarks);
 
     List<String> getRemarksImageList(Integer remarksId);

+ 19 - 410
src/main/java/com/caimei/modules/user/entity/CmUser.java

@@ -18,75 +18,36 @@ public class CmUser extends DataEntity<CmUser> {
     private Integer userID;        // userID
     private Integer userOrganizeID;//用户组织ID
     private String mobile;        // 手机号码
-    private Integer userPermission;        // 用户权限
     private String email;        // 邮箱
     private String userName;        // 用户名
     private Integer source;         //注册来源: 0网站 1小程序
     private String image;        // image
     private String password;        // 密码
-//    private String userLevelID;        // 用户会员等级,见表c_userlevel或枚举UserLevel
     private String name;        // 组织名称
-//    private String nick;        // 昵称
-//    private String sex;        // 性别
     private String registerUserTypeID;        // 用户类型,见表c_usertype或枚举UserType
-//    private String manufacturerFlag;        // 已废弃 是否是供应商,1是 空或0否
     private String manufacturerStatus;        // 供应商状态,见表c_shopstatus或枚举ShopStatus
     private String shopID;        // 供应商Id
-//    private String serviceProviderFlag;        // 已废弃  是否创客,1是 空或0否
-//    private String clubFlag;        //已废弃  是否会所,1是 空或0否
-//    private String masterFlag;        //已废弃  masterFlag
-//    private String normalFlag;        //已废弃  normalFlag
     private String auditStatus;        // auditStatus
     private String auditTime;        // auditTime
     private String auditNote;        // auditNote
     private String registerTime;        // 注册时间
     private String registerIP;        // 注册ip
     private String loginTime;        // 登录时间
-    private String loginFailTime;        // 登录失败次数
     private String loginIP;        // 登录ip
     private String validFlag;        // 用户状态,1正常,0冻结
-//    private String emailCheckFlag;        // emailCheckFlag
-//    private String mobileCheckFlag;        // mobileCheckFlag
-    private String clubStatus;        // 会所状态,见表c_clubstatus或枚举ClubStatus
     private String clubID;        // 会所Id
+
     private String agreeFlag;        // agreeFlag
-//    private String activationCode;        // activationCode
-//    private String activationDate;        // activationDate
     private String serviceProviderStatus;        // 创客状态
     private String serviceProviderID;        // 创客Id
-//    private String masterStatus;        // masterStatus
-//    private String masterID;        // masterID
     private Double userMoney;        // 账户余额
     private Double ableUserMoney;        //账户可用余额
-//    private String point;        // point
-//    private String shopERPFlag;        // shopERPFlag
-//    private String fromUserID;        // 邀请人Id
-//    private String fromUserName;        // 邀请人名称
-    private String logoffTime;        // logoffTime
-    private String appKey;        // appKey
-    private String appSecret;        // appSecret
-//    private String sampleFlag;        // sampleFlag
-    private String scanFlag;        // 扫描标志(4 CRM拉上来的会所)
-//    private String sysroleid;        // sysroleid
-//    private String gender;        // gender
-//    private String age;        // 年龄
-//    private String salerbuyer;        // salerbuyer
-//    private String position;        // position
-//    private String skill;        // skill
-//    private String workage;        // workage
-//    private String wechat;        // 微信号
-//    private String qq;        // QQ号
-//    private String smsFlag;        // 短信是否发送成功
     private Integer userBeans;        // 采美豆数量
-//    private String privateShopFlag;        // 平台商标志位  0非平台商 1平台商
-//    private String privateClubFlag;        // 平台会所标志位  0非平台会所 1平台会所
-//    private String isMeiDaoAuthorized;        // isMeiDaoAuthorized
     private String guideFlag;        // 引导层弹出  0需要弹出  1不需要弹出
     private String nickName;        // 微信昵称
     private String startTime;     //注册时间开始 查询条件
     private String endTime;        //注册时间结束  查询条件
-    private String operatorMobile; //
-
+    private String operatorMobile;
 
     /**
      * 用户模块重构
@@ -97,9 +58,8 @@ public class CmUser extends DataEntity<CmUser> {
     private Integer companyUserID;//企业用户id
     private String openID;//微信openID
     private String bindMobile;//企业绑定手机号
-    private String tipStatus;//弹窗提示状态
-    private String identityDisplay; //前台身份展示
     private String linkMan;//联系人
+    private Integer scanFlag;//联系人
 
     //会所用户信息
     private String town; // 区
@@ -111,6 +71,14 @@ public class CmUser extends DataEntity<CmUser> {
     private String userIds;  //用户id","隔开
     private boolean storeStatus = false; //是否存在数据库
 
+    public Integer getScanFlag() {
+        return scanFlag;
+    }
+
+    public void setScanFlag(Integer scanFlag) {
+        this.scanFlag = scanFlag;
+    }
+
     public CmUser() {
         super();
     }
@@ -119,6 +87,14 @@ public class CmUser extends DataEntity<CmUser> {
         super(id);
     }
 
+    public String getAgreeFlag() {
+        return agreeFlag;
+    }
+
+    public void setAgreeFlag(String agreeFlag) {
+        this.agreeFlag = agreeFlag;
+    }
+
     @NotNull(message = "userID不能为空")
     public Integer getUserID() {
         return userID;
@@ -136,14 +112,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.mobile = mobile;
     }
 
-    public Integer getUserPermission() {
-        return userPermission;
-    }
-
-    public void setUserPermission(Integer userPermission) {
-        this.userPermission = userPermission;
-    }
-
     public String getEmail() {
         return email;
     }
@@ -176,14 +144,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.password = password;
     }
 
-//    public String getUserLevelID() {
-//        return userLevelID;
-//    }
-//
-//    public void setUserLevelID(String userLevelID) {
-//        this.userLevelID = userLevelID;
-//    }
-
     public String getName() {
         return name;
     }
@@ -192,22 +152,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.name = name;
     }
 
-//    public String getNick() {
-//        return nick;
-//    }
-//
-//    public void setNick(String nick) {
-//        this.nick = nick;
-//    }
-
-//    public String getSex() {
-//        return sex;
-//    }
-//
-//    public void setSex(String sex) {
-//        this.sex = sex;
-//    }
-
     public String getRegisterUserTypeID() {
         return registerUserTypeID;
     }
@@ -216,15 +160,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.registerUserTypeID = registerUserTypeID;
     }
 
-//    @Length(min = 0, max = 1, message = "是否是供应商,1是 空或0否长度必须介于 0 和 1 之间")
-//    public String getManufacturerFlag() {
-//        return manufacturerFlag;
-//    }
-//
-//    public void setManufacturerFlag(String manufacturerFlag) {
-//        this.manufacturerFlag = manufacturerFlag;
-//    }
-
     @Length(min = 0, max = 11, message = "供应商状态,见表c_shopstatus或枚举ShopStatus长度必须介于 0 和 11 之间")
     public String getManufacturerStatus() {
         return manufacturerStatus;
@@ -243,42 +178,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.shopID = shopID;
     }
 
-//    @Length(min = 0, max = 1, message = "是否创客,1是 空或0否长度必须介于 0 和 1 之间")
-//    public String getServiceProviderFlag() {
-//        return serviceProviderFlag;
-//    }
-//
-//    public void setServiceProviderFlag(String serviceProviderFlag) {
-//        this.serviceProviderFlag = serviceProviderFlag;
-//    }
-
-//    @Length(min = 0, max = 1, message = "是否会所,1是 空或0否长度必须介于 0 和 1 之间")
-//    public String getClubFlag() {
-//        return clubFlag;
-//    }
-//
-//    public void setClubFlag(String clubFlag) {
-//        this.clubFlag = clubFlag;
-//    }
-//
-//    @Length(min = 0, max = 1, message = "masterFlag长度必须介于 0 和 1 之间")
-//    public String getMasterFlag() {
-//        return masterFlag;
-//    }
-//
-//    public void setMasterFlag(String masterFlag) {
-//        this.masterFlag = masterFlag;
-//    }
-//
-//    @Length(min = 0, max = 1, message = "normalFlag长度必须介于 0 和 1 之间")
-//    public String getNormalFlag() {
-//        return normalFlag;
-//    }
-//
-//    public void setNormalFlag(String normalFlag) {
-//        this.normalFlag = normalFlag;
-//    }
-
     @Length(min = 0, max = 1, message = "auditStatus长度必须介于 0 和 1 之间")
     public String getAuditStatus() {
         return auditStatus;
@@ -330,14 +229,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.loginTime = loginTime;
     }
 
-    public String getLoginFailTime() {
-        return loginFailTime;
-    }
-
-    public void setLoginFailTime(String loginFailTime) {
-        this.loginFailTime = loginFailTime;
-    }
-
     public String getLoginIP() {
         return loginIP;
     }
@@ -353,31 +244,6 @@ public class CmUser extends DataEntity<CmUser> {
     public void setValidFlag(String validFlag) {
         this.validFlag = validFlag;
     }
-
-//    public String getEmailCheckFlag() {
-//        return emailCheckFlag;
-//    }
-//
-//    public void setEmailCheckFlag(String emailCheckFlag) {
-//        this.emailCheckFlag = emailCheckFlag;
-//    }
-//
-//    public String getMobileCheckFlag() {
-//        return mobileCheckFlag;
-//    }
-//
-//    public void setMobileCheckFlag(String mobileCheckFlag) {
-//        this.mobileCheckFlag = mobileCheckFlag;
-//    }
-
-    public String getClubStatus() {
-        return clubStatus;
-    }
-
-    public void setClubStatus(String clubStatus) {
-        this.clubStatus = clubStatus;
-    }
-
     public String getClubID() {
         return clubID;
     }
@@ -385,40 +251,13 @@ public class CmUser extends DataEntity<CmUser> {
     public void setClubID(String clubID) {
         this.clubID = clubID;
     }
-
-    public String getAgreeFlag() {
-        return agreeFlag;
-    }
-
-    public void setAgreeFlag(String agreeFlag) {
-        this.agreeFlag = agreeFlag;
-    }
-
-//    public String getActivationCode() {
-//        return activationCode;
-//    }
-//
-//    public void setActivationCode(String activationCode) {
-//        this.activationCode = activationCode;
-//    }
-//
-//    public String getActivationDate() {
-//        return activationDate;
-//    }
-//
-//    public void setActivationDate(String activationDate) {
-//        this.activationDate = activationDate;
-//    }
-
     @Length(min = 0, max = 11, message = "创客状态长度必须介于 0 和 11 之间")
     public String getServiceProviderStatus() {
         return serviceProviderStatus;
     }
-
     public void setServiceProviderStatus(String serviceProviderStatus) {
         this.serviceProviderStatus = serviceProviderStatus;
     }
-
     @Length(min = 0, max = 11, message = "创客Id长度必须介于 0 和 11 之间")
     public String getServiceProviderID() {
         return serviceProviderID;
@@ -428,24 +267,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.serviceProviderID = serviceProviderID;
     }
 
-//    @Length(min = 0, max = 11, message = "masterStatus长度必须介于 0 和 11 之间")
-//    public String getMasterStatus() {
-//        return masterStatus;
-//    }
-//
-//    public void setMasterStatus(String masterStatus) {
-//        this.masterStatus = masterStatus;
-//    }
-//
-//    @Length(min = 0, max = 11, message = "masterID长度必须介于 0 和 11 之间")
-//    public String getMasterID() {
-//        return masterID;
-//    }
-//
-//    public void setMasterID(String masterID) {
-//        this.masterID = masterID;
-//    }
-
     public Double getUserMoney() {
         return userMoney;
     }
@@ -462,174 +283,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.ableUserMoney = ableUserMoney;
     }
 
-//    @Length(min = 0, max = 11, message = "point长度必须介于 0 和 11 之间")
-//    public String getPoint() {
-//        return point;
-//    }
-//
-//    public void setPoint(String point) {
-//        this.point = point;
-//    }
-//
-//    @Length(min = 0, max = 1, message = "shopERPFlag长度必须介于 0 和 1 之间")
-//    public String getShopERPFlag() {
-//        return shopERPFlag;
-//    }
-//
-//    public void setShopERPFlag(String shopERPFlag) {
-//        this.shopERPFlag = shopERPFlag;
-//    }
-//
-//    @Length(min = 0, max = 11, message = "邀请人Id长度必须介于 0 和 11 之间")
-//    public String getFromUserID() {
-//        return fromUserID;
-//    }
-//
-//    public void setFromUserID(String fromUserID) {
-//        this.fromUserID = fromUserID;
-//    }
-//
-//    public String getFromUserName() {
-//        return fromUserName;
-//    }
-//
-//    public void setFromUserName(String fromUserName) {
-//        this.fromUserName = fromUserName;
-//    }
-
-    public String getLogoffTime() {
-        return logoffTime;
-    }
-
-    public void setLogoffTime(String logoffTime) {
-        this.logoffTime = logoffTime;
-    }
-
-    @Length(min = 0, max = 20, message = "appKey长度必须介于 0 和 20 之间")
-    public String getAppKey() {
-        return appKey;
-    }
-
-    public void setAppKey(String appKey) {
-        this.appKey = appKey;
-    }
-
-    @Length(min = 0, max = 25, message = "appSecret长度必须介于 0 和 25 之间")
-    public String getAppSecret() {
-        return appSecret;
-    }
-
-    public void setAppSecret(String appSecret) {
-        this.appSecret = appSecret;
-    }
-
-//    @Length(min = 0, max = 1, message = "sampleFlag长度必须介于 0 和 1 之间")
-//    public String getSampleFlag() {
-//        return sampleFlag;
-//    }
-//
-//    public void setSampleFlag(String sampleFlag) {
-//        this.sampleFlag = sampleFlag;
-//    }
-
-    @Length(min = 0, max = 11, message = "扫描标志(4 CRM拉上来的会所)长度必须介于 0 和 11 之间")
-    public String getScanFlag() {
-        return scanFlag;
-    }
-
-    public void setScanFlag(String scanFlag) {
-        this.scanFlag = scanFlag;
-    }
-
-//    @Length(min = 0, max = 11, message = "sysroleid长度必须介于 0 和 11 之间")
-//    public String getSysroleid() {
-//        return sysroleid;
-//    }
-//
-//    public void setSysroleid(String sysroleid) {
-//        this.sysroleid = sysroleid;
-//    }
-//
-//    @Length(min = 0, max = 2, message = "gender长度必须介于 0 和 2 之间")
-//    public String getGender() {
-//        return gender;
-//    }
-//
-//    public void setGender(String gender) {
-//        this.gender = gender;
-//    }
-//
-//    @Length(min = 0, max = 11, message = "年龄长度必须介于 0 和 11 之间")
-//    public String getAge() {
-//        return age;
-//    }
-//
-//    public void setAge(String age) {
-//        this.age = age;
-//    }
-//
-//    @Length(min = 0, max = 11, message = "salerbuyer长度必须介于 0 和 11 之间")
-//    public String getSalerbuyer() {
-//        return salerbuyer;
-//    }
-//
-//    public void setSalerbuyer(String salerbuyer) {
-//        this.salerbuyer = salerbuyer;
-//    }
-//
-//    @Length(min = 0, max = 128, message = "position长度必须介于 0 和 128 之间")
-//    public String getPosition() {
-//        return position;
-//    }
-//
-//    public void setPosition(String position) {
-//        this.position = position;
-//    }
-//
-//    @Length(min = 0, max = 128, message = "skill长度必须介于 0 和 128 之间")
-//    public String getSkill() {
-//        return skill;
-//    }
-//
-//    public void setSkill(String skill) {
-//        this.skill = skill;
-//    }
-//
-//    public String getWorkage() {
-//        return workage;
-//    }
-//
-//    public void setWorkage(String workage) {
-//        this.workage = workage;
-//    }
-//
-//    @Length(min = 0, max = 64, message = "微信号长度必须介于 0 和 64 之间")
-//    public String getWechat() {
-//        return wechat;
-//    }
-//
-//    public void setWechat(String wechat) {
-//        this.wechat = wechat;
-//    }
-//
-//    @Length(min = 0, max = 32, message = "QQ号长度必须介于 0 和 32 之间")
-//    public String getQq() {
-//        return qq;
-//    }
-//
-//    public void setQq(String qq) {
-//        this.qq = qq;
-//    }
-//
-//    @Length(min = 0, max = 1, message = "短信是否发送成功长度必须介于 0 和 1 之间")
-//    public String getSmsFlag() {
-//        return smsFlag;
-//    }
-//
-//    public void setSmsFlag(String smsFlag) {
-//        this.smsFlag = smsFlag;
-//    }
-
     @Length(min = 0, max = 11, message = "采美豆数量长度必须介于 0 和 11 之间")
     public Integer getUserBeans() {
         return userBeans;
@@ -639,33 +292,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.userBeans = userBeans;
     }
 
-//    @Length(min = 0, max = 11, message = "平台商标志位  0非平台商 1平台商长度必须介于 0 和 11 之间")
-//    public String getPrivateShopFlag() {
-//        return privateShopFlag;
-//    }
-//
-//    public void setPrivateShopFlag(String privateShopFlag) {
-//        this.privateShopFlag = privateShopFlag;
-//    }
-//
-//    @Length(min = 0, max = 11, message = "平台会所标志位  0非平台会所 1平台会所长度必须介于 0 和 11 之间")
-//    public String getPrivateClubFlag() {
-//        return privateClubFlag;
-//    }
-//
-//    public void setPrivateClubFlag(String privateClubFlag) {
-//        this.privateClubFlag = privateClubFlag;
-//    }
-//
-//    @Length(min = 0, max = 11, message = "isMeiDaoAuthorized长度必须介于 0 和 11 之间")
-//    public String getIsMeiDaoAuthorized() {
-//        return isMeiDaoAuthorized;
-//    }
-//
-//    public void setIsMeiDaoAuthorized(String isMeiDaoAuthorized) {
-//        this.isMeiDaoAuthorized = isMeiDaoAuthorized;
-//    }
-
     @Length(min = 0, max = 1, message = "引导层弹出  0需要弹出  1不需要弹出长度必须介于 0 和 1 之间")
     public String getGuideFlag() {
         return guideFlag;
@@ -731,23 +357,6 @@ public class CmUser extends DataEntity<CmUser> {
         this.bindMobile = bindMobile;
     }
 
-    public String getTipStatus() {
-        return tipStatus;
-    }
-
-    public void setTipStatus(String tipStatus) {
-        this.tipStatus = tipStatus;
-    }
-
-    @Transient
-    public String getIdentityDisplay() {
-        return identityDisplay;
-    }
-
-    public void setIdentityDisplay(String identityDisplay) {
-        this.identityDisplay = identityDisplay;
-    }
-
     @Transient
     public String getStartTime() {
         return startTime;

+ 40 - 391
src/main/java/com/caimei/modules/user/entity/NewCmClub.java

@@ -21,7 +21,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     private Integer clubID;        // 会所ID
     private Integer userID;        // 用户ID
     private Integer userOrganizeID;//用户组织ID
-    private String userPermission;
     private String name;        // 会所名称
     private String sname;        // 简称
     private String searchName;        // 搜索会所名称
@@ -90,9 +89,48 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     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 startLoginTime;     //登录时间开始 查询条件
+    private String endLoginTime;        //登录时间结束  查询条件
     private String userIdentity;  //用户身份
     private Integer svipUserFlag;   //超级会员用户标识,1是,2不是
     private Integer newDeal;//新分配机构状态 0.否,1.是
+
+    public Date getProviderTime() {
+        return providerTime;
+    }
+
+    public void setProviderTime(Date providerTime) {
+        this.providerTime = providerTime;
+    }
+
+    public Date getLoginTime() {
+        return loginTime;
+    }
+
+    public void setLoginTime(Date loginTime) {
+        this.loginTime = loginTime;
+    }
+
+    public String getEndLoginTime() {
+        return endLoginTime;
+    }
+
+    public void setEndLoginTime(String endLoginTime) {
+        this.endLoginTime = endLoginTime;
+    }
+
+    public String getStartLoginTime() {
+        return startLoginTime;
+    }
+
+    public void setStartLoginTime(String startLoginTime) {
+        this.startLoginTime = startLoginTime;
+    }
+
     public String getCheckMan() {
         return checkMan;
     }
@@ -149,15 +187,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
         this.userID = userID;
     }
 
-//    @NotNull(message = "【已废弃】会所类型不能为空")
-//    public Integer getClubTypeID() {
-//        return clubTypeID;
-//    }
-//
-//    public void setClubTypeID(Integer clubTypeID) {
-//        this.clubTypeID = clubTypeID;
-//    }
-
     @Length(min = 0, max = 50, message = "会所名称长度必须介于 0 和 50 之间")
     public String getName() {
         return name;
@@ -176,24 +205,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
         this.sname = sname;
     }
 
-//    @Length(min = 0, max = 100, message = "会所英文名称长度必须介于 0 和 100 之间")
-//    public String getNameEn() {
-//        return nameEn;
-//    }
-//
-//    public void setNameEn(String nameEn) {
-//        this.nameEn = nameEn;
-//    }
-//
-//    @Length(min = 0, max = 200, message = "网址长度必须介于 0 和 200 之间")
-//    public String getSite() {
-//        return site;
-//    }
-//
-//    public void setSite(String site) {
-//        this.site = site;
-//    }
-
     @Length(min = 0, max = 200, message = "logo长度必须介于 0 和 200 之间")
     public String getLogo() {
         return logo;
@@ -203,30 +214,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
         this.logo = logo;
     }
 
-//    public Double getLevel() {
-//        return level;
-//    }
-//
-//    public void setLevel(Double level) {
-//        this.level = level;
-//    }
-//
-//    public Double getScore() {
-//        return score;
-//    }
-//
-//    public void setScore(Double score) {
-//        this.score = score;
-//    }
-//
-//    public Integer getSubClubCount() {
-//        return subClubCount;
-//    }
-//
-//    public void setSubClubCount(Integer subClubCount) {
-//        this.subClubCount = subClubCount;
-//    }
-
     @Length(min = 0, max = 20, message = "法人长度必须介于 0 和 20 之间")
     public String getLegalPerson() {
         return legalPerson;
@@ -260,121 +247,62 @@ public class NewCmClub extends DataEntity<NewCmClub> {
         this.townID = townID;
     }
 
-//    @Length(min = 0, max = 1, message = "是否同意协议长度必须介于 0 和 1 之间")
-//    public String getAgreement() {
-//        return agreement;
-//    }
-//
-//    public void setAgreement(String agreement) {
-//        this.agreement = agreement;
-//    }
-
     @Length(min = 0, max = 100, message = "拉会所上线的用户的cmBindId,以逗号结尾长度必须介于 0 和 100 之间")
     public String getFlag() {
         return flag;
     }
-
     public void setFlag(String flag) {
         this.flag = flag;
     }
-
     public Integer getInviterBindID() {
         return inviterBindID;
     }
-
     public void setInviterBindID(Integer inviterBindID) {
         this.inviterBindID = inviterBindID;
     }
-
     @Length(min = 0, max = 255, message = "邀请者名称长度必须介于 0 和 255 之间")
     public String getInviterName() {
         return inviterName;
     }
-
     public void setInviterName(String inviterName) {
         this.inviterName = inviterName;
     }
-
     public Integer getSpID() {
-        return spID;
+        return this.spID;
     }
-
     public void setSpID(Integer spID) {
         this.spID = spID;
     }
-
     public Integer getMainServiceProviderID() {
         return mainServiceProviderID;
     }
-
     public void setMainServiceProviderID(Integer mainServiceProviderID) {
         this.mainServiceProviderID = mainServiceProviderID;
     }
-
     public String getScanTime() {
         return scanTime;
     }
-
     public void setScanTime(String scanTime) {
         this.scanTime = scanTime;
     }
-
-//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    public Date getCheckTime() {
-//        return checkTime;
-//    }
-//
-//    public void setCheckTime(Date checkTime) {
-//        this.checkTime = checkTime;
-//    }
-
     @Length(min = 0, max = 100, message = "详细地址长度必须介于 0 和 100 之间")
     public String getAddress() {
         return address;
     }
-
     public void setAddress(String address) {
         this.address = address;
     }
-
-//    public Double getRegisteredCapital() {
-//        return registeredCapital;
-//    }
-//
-//    public void setRegisteredCapital(Double registeredCapital) {
-//        this.registeredCapital = registeredCapital;
-//    }
-//
-//    public Integer getMainClubID() {
-//        return mainClubID;
-//    }
-//
-//    public void setMainClubID(Integer mainClubID) {
-//        this.mainClubID = mainClubID;
-//    }
-//
-//    public Double getTurnover() {
-//        return turnover;
-//    }
-//
-//    public void setTurnover(Double turnover) {
-//        this.turnover = turnover;
-//    }
-
     @Length(min = 0, max = 50, message = "联系人长度必须介于 0 和 50 之间")
     public String getLinkMan() {
         return linkMan;
     }
-
     public void setLinkMan(String linkMan) {
         this.linkMan = linkMan;
     }
-
     @Length(min = 0, max = 50, message = "联系电话长度必须介于 0 和 50 之间")
     public String getContractPhone() {
         return contractPhone;
     }
-
     public void setContractPhone(String contractPhone) {
         this.contractPhone = contractPhone;
     }
@@ -387,210 +315,33 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setContractMobile(String contractMobile) {
         this.contractMobile = contractMobile;
     }
-
     @Length(min = 0, max = 50, message = "传真长度必须介于 0 和 50 之间")
     public String getFax() {
         return fax;
     }
-
     public void setFax(String fax) {
         this.fax = fax;
     }
-
-//    @Length(min = 0, max = 10, message = "邮编长度必须介于 0 和 10 之间")
-//    public String getZipCode() {
-//        return zipCode;
-//    }
-//
-//    public void setZipCode(String zipCode) {
-//        this.zipCode = zipCode;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "联系人长度必须介于 0 和 50 之间")
-//    public String getLinkMan1() {
-//        return linkMan1;
-//    }
-//
-//    public void setLinkMan1(String linkMan1) {
-//        this.linkMan1 = linkMan1;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "职务长度必须介于 0 和 50 之间")
-//    public String getDuty1() {
-//        return duty1;
-//    }
-//
-//    public void setDuty1(String duty1) {
-//        this.duty1 = duty1;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "联系电话1长度必须介于 0 和 50 之间")
-//    public String getContractPhone1() {
-//        return contractPhone1;
-//    }
-//
-//    public void setContractPhone1(String contractPhone1) {
-//        this.contractPhone1 = contractPhone1;
-//    }
-//
-//    @Length(min = 0, max = 20, message = "手机号1长度必须介于 0 和 20 之间")
-//    public String getContractMobile1() {
-//        return contractMobile1;
-//    }
-//
-//    public void setContractMobile1(String contractMobile1) {
-//        this.contractMobile1 = contractMobile1;
-//    }
-//
-//    @Length(min = 0, max = 20, message = "联系QQ长度必须介于 0 和 20 之间")
-//    public String getContractQQ1() {
-//        return contractQQ1;
-//    }
-//
-//    public void setContractQQ1(String contractQQ1) {
-//        this.contractQQ1 = contractQQ1;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "微信号长度必须介于 0 和 50 之间")
-//    public String getWechat1() {
-//        return wechat1;
-//    }
-//
-//    public void setWechat1(String wechat1) {
-//        this.wechat1 = wechat1;
-//    }
-//
     @Length(min = 0, max = 50, message = "联系邮箱长度必须介于 0 和 50 之间")
     public String getContractEmail() {
         return contractEmail;
     }
-
     public void setContractEmail(String contractEmail) {
         this.contractEmail = contractEmail;
     }
-//
-//    @Length(min = 0, max = 50, message = "联系人长度必须介于 0 和 50 之间")
-//    public String getLinkMan2() {
-//        return linkMan2;
-//    }
-//
-//    public void setLinkMan2(String linkMan2) {
-//        this.linkMan2 = linkMan2;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "职务长度必须介于 0 和 50 之间")
-//    public String getDuty2() {
-//        return duty2;
-//    }
-//
-//    public void setDuty2(String duty2) {
-//        this.duty2 = duty2;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "联系电话长度必须介于 0 和 50 之间")
-//    public String getContractPhone2() {
-//        return contractPhone2;
-//    }
-//
-//    public void setContractPhone2(String contractPhone2) {
-//        this.contractPhone2 = contractPhone2;
-//    }
-//
-//    @Length(min = 0, max = 20, message = "联系手机长度必须介于 0 和 20 之间")
-//    public String getContractMobile2() {
-//        return contractMobile2;
-//    }
-//
-//    public void setContractMobile2(String contractMobile2) {
-//        this.contractMobile2 = contractMobile2;
-//    }
-//
-//    @Length(min = 0, max = 20, message = "联系QQ长度必须介于 0 和 20 之间")
-//    public String getContractQQ2() {
-//        return contractQQ2;
-//    }
-//
-//    public void setContractQQ2(String contractQQ2) {
-//        this.contractQQ2 = contractQQ2;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "微信号长度必须介于 0 和 50 之间")
-//    public String getWechat2() {
-//        return wechat2;
-//    }
-//
-//    public void setWechat2(String wechat2) {
-//        this.wechat2 = wechat2;
-//    }
-//
-//    @Length(min = 0, max = 50, message = "联系邮箱长度必须介于 0 和 50 之间")
-//    public String getContractEmail2() {
-//        return contractEmail2;
-//    }
-//
-//    public void setContractEmail2(String contractEmail2) {
-//        this.contractEmail2 = contractEmail2;
-//    }
-//
-//    @Length(min = 0, max = 100, message = "经营范围长度必须介于 0 和 100 之间")
-//    public String getScope() {
-//        return scope;
-//    }
-//
-//    public void setScope(String scope) {
-//        this.scope = scope;
-//    }
-
     @Length(min = 0, max = 500, message = "公司简介长度必须介于 0 和 500 之间")
     public String getInfo() {
         return info;
     }
-
     public void setInfo(String info) {
         this.info = info;
     }
-
-//    public Double getLng() {
-//        return lng;
-//    }
-//
-//    public void setLng(Double lng) {
-//        this.lng = lng;
-//    }
-//
-//    public Double getLat() {
-//        return lat;
-//    }
-//
-//    public void setLat(Double lat) {
-//        this.lat = lat;
-//    }
-
     public String getAddTime() {
         return addTime;
     }
-
     public void setAddTime(String addTime) {
         this.addTime = addTime;
     }
-
-//    public Integer getFavoriteTimes() {
-//        return favoriteTimes;
-//    }
-//
-//    public void setFavoriteTimes(Integer favoriteTimes) {
-//        this.favoriteTimes = favoriteTimes;
-//    }
-//
-//    @Length(min = 0, max = 1, message = "支付长度必须介于 0 和 1 之间")
-//    public String getPayFlag1() {
-//        return payFlag1;
-//    }
-//
-//    public void setPayFlag1(String payFlag1) {
-//        this.payFlag1 = payFlag1;
-//    }
-
     @Length(min = 0, max = 19, message = "审核时间长度必须介于 0 和 19 之间")
     public String getAuditTime() {
         return auditTime;
@@ -616,25 +367,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setStatus(Integer status) {
         this.status = status;
     }
-
-//    @Length(min = 0, max = 1, message = "集团会所邀请状态长度必须介于 0 和 1 之间")
-//    public String getClubInvitationStatus() {
-//        return clubInvitationStatus;
-//    }
-//
-//    public void setClubInvitationStatus(String clubInvitationStatus) {
-//        this.clubInvitationStatus = clubInvitationStatus;
-//    }
-//
-//    @Length(min = 0, max = 100, message = "收货地址长度必须介于 0 和 100 之间")
-//    public String getRecAddress() {
-//        return recAddress;
-//    }
-//
-//    public void setRecAddress(String recAddress) {
-//        this.recAddress = recAddress;
-//    }
-
     @Length(min = 0, max = 200, message = "营业执照长度必须介于 0 和 200 之间")
     public String getBusinessLicenseImage() {
         return businessLicenseImage;
@@ -643,23 +375,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setBusinessLicenseImage(String businessLicenseImage) {
         this.businessLicenseImage = businessLicenseImage;
     }
-
-//    public Integer getSortIndex() {
-//        return sortIndex;
-//    }
-//
-//    public void setSortIndex(Integer sortIndex) {
-//        this.sortIndex = sortIndex;
-//    }
-//
-//    public Integer getRecTownID() {
-//        return recTownID;
-//    }
-//
-//    public void setRecTownID(Integer recTownID) {
-//        this.recTownID = recTownID;
-//    }
-
     public Integer getDefaultServiceProviderID() {
         return defaultServiceProviderID;
     }
@@ -667,7 +382,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setDefaultServiceProviderID(Integer defaultServiceProviderID) {
         this.defaultServiceProviderID = defaultServiceProviderID;
     }
-
     @Length(min = 0, max = 19, message = "创客更新时间长度必须介于 0 和 19 之间")
     public String getDefaultServiceProviderUpdTime() {
         return defaultServiceProviderUpdTime;
@@ -676,51 +390,13 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setDefaultServiceProviderUpdTime(String defaultServiceProviderUpdTime) {
         this.defaultServiceProviderUpdTime = defaultServiceProviderUpdTime;
     }
-
-//    @Length(min = 0, max = 1, message = "第一次服务标志长度必须介于 0 和 1 之间")
-//    public String getFirstServiceProviderFlag() {
-//        return firstServiceProviderFlag;
-//    }
-//
-//    public void setFirstServiceProviderFlag(String firstServiceProviderFlag) {
-//        this.firstServiceProviderFlag = firstServiceProviderFlag;
-//    }
-
-//    @Length(min = 0, max = 20, message = "规模长度必须介于 0 和 20 之间")
-//    public String getScale() {
-//        return scale;
-//    }
-//
-//    public void setScale(String scale) {
-//        this.scale = scale;
-//    }
-//
-//    public Integer getEmpnum() {
-//        return empnum;
-//    }
-//
-//    public void setEmpnum(Integer empnum) {
-//        this.empnum = empnum;
-//    }
-
     @Length(min = 0, max = 200, message = "主打项目长度必须介于 0 和 200 之间")
     public String getMainpro() {
         return mainpro;
     }
-
     public void setMainpro(String mainpro) {
         this.mainpro = mainpro;
     }
-
-//    @Length(min = 0, max = 500, message = "备注长度必须介于 0 和 500 之间")
-//    public String getRemark() {
-//        return remark;
-//    }
-//
-//    public void setRemark(String remark) {
-//        this.remark = remark;
-//    }
-
     @Length(min = 1, max = 2, message = "扫描状态 0待扫描 1 已扫描 2已上线长度必须介于 1 和 2 之间")
     public String getScanFlag() {
         return scanFlag;
@@ -779,15 +455,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setUserName(String userName) {
         this.userName = userName;
     }
-
-//    public Integer getUserLevelID() {
-//        return userLevelID;
-//    }
-//
-//    public void setUserLevelID(Integer userLevelID) {
-//        this.userLevelID = userLevelID;
-//    }
-
     public Date getRegisterTime() {
         return registerTime;
     }
@@ -795,15 +462,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setRegisterTime(Date registerTime) {
         this.registerTime = registerTime;
     }
-
-//    public String getSmsFlag() {
-//        return smsFlag;
-//    }
-//
-//    public void setSmsFlag(String smsFlag) {
-//        this.smsFlag = smsFlag;
-//    }
-
     public String getUserScanFlag() {
         return userScanFlag;
     }
@@ -933,15 +591,6 @@ public class NewCmClub extends DataEntity<NewCmClub> {
     public void setRegisterIP(String registerIP) {
         this.registerIP = registerIP;
     }
-
-    public String getUserPermission() {
-        return userPermission;
-    }
-
-    public void setUserPermission(String userPermission) {
-        this.userPermission = userPermission;
-    }
-
     public String getSearchName() {
         return searchName;
     }

+ 39 - 1
src/main/java/com/caimei/modules/user/entity/NewCmSp.java

@@ -5,6 +5,7 @@ import org.hibernate.validator.constraints.Length;
 
 import javax.validation.constraints.NotNull;
 import java.beans.Transient;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -31,6 +32,11 @@ public class NewCmSp extends DataEntity<NewCmSp> {
 	private String addTime;		// 创建时间
 	private Integer mainServiceProviderID;		// 创客经理Id
 	private List<CmSaleMan> teams;  //小组组长列表
+	//活跃比例
+	private Integer livelyClub;
+	private Integer nolivelyClub;
+	private BigDecimal livelyClubProportion;
+	private BigDecimal nolivelyClubProportion;
 //	private String nameEn;		// 英文名
 //	private String site;		// 网址
 //	private String logo;		// 头像
@@ -96,6 +102,38 @@ public class NewCmSp extends DataEntity<NewCmSp> {
 		return teams;
 	}
 
+	public Integer getLivelyClub() {
+		return livelyClub;
+	}
+
+	public void setLivelyClub(Integer livelyClub) {
+		this.livelyClub = livelyClub;
+	}
+
+	public Integer getNolivelyClub() {
+		return nolivelyClub;
+	}
+
+	public void setNolivelyClub(Integer nolivelyClub) {
+		this.nolivelyClub = nolivelyClub;
+	}
+
+	public BigDecimal getLivelyClubProportion() {
+		return livelyClubProportion;
+	}
+
+	public void setLivelyClubProportion(BigDecimal livelyClubProportion) {
+		this.livelyClubProportion = livelyClubProportion;
+	}
+
+	public BigDecimal getNolivelyClubProportion() {
+		return nolivelyClubProportion;
+	}
+
+	public void setNolivelyClubProportion(BigDecimal nolivelyClubProportion) {
+		this.nolivelyClubProportion = nolivelyClubProportion;
+	}
+
 	public void setTeams(List<CmSaleMan> teams) {
 		this.teams = teams;
 	}
@@ -635,4 +673,4 @@ public class NewCmSp extends DataEntity<NewCmSp> {
 	public void setContractMobile(String contractMobile) {
 		this.contractMobile = contractMobile;
 	}
-}
+}

+ 0 - 10
src/main/java/com/caimei/modules/user/service/ClubTemporaryService.java

@@ -86,8 +86,6 @@ public class ClubTemporaryService extends CrudService<ClubTemporaryDao, ClubTemp
             user.setUserName(clubTemporary.getLinkMan());
             // 绑定手机号
             user.setBindMobile(clubTemporary.getBindMobile());
-            // 设置已确认(客服确认机构)
-            user.setClubStatus("93");
             // 默认密码
             user.setPassword("12345678");
             // 同意协议
@@ -104,8 +102,6 @@ public class ClubTemporaryService extends CrudService<ClubTemporaryDao, ClubTemp
                 user.setRegisterUserTypeID("3");
                 // 用户身份: 1协销 2会员机构 3供应商 4普通机构
                 user.setUserIdentity(2);
-                // 用户权限: 2会员机构 3供应商 4协销 5普通机构
-                user.setUserPermission(2);
                 // 组织名称
                 user.setName(clubTemporary.getName());
                 // 邮箱
@@ -121,8 +117,6 @@ public class ClubTemporaryService extends CrudService<ClubTemporaryDao, ClubTemp
                 user.setRegisterUserTypeID("4");
                 // 用户身份: 1协销 2会员机构 3供应商 4普通机构
                 user.setUserIdentity(4);
-                // 用户权限: 2会员机构 3供应商 4协销 5普通机构
-                user.setUserPermission(5);
                 // 是否已经引导过(机构升级:0否,1是)
                 user.setGuideFlag("0");
             }
@@ -191,10 +185,6 @@ public class ClubTemporaryService extends CrudService<ClubTemporaryDao, ClubTemp
             cmUserDao.update(user);
             clubTemporary.setConfirmUserId(user.getUserID());
             clubTemporaryDao.update(clubTemporary);
-        } else {
-            //客服二次确认注册
-            cmUserDao.updateByClubStatus(93, clubTemporary.getConfirmUserId());
-            newCmClubDao.updateByStatus(93, clubTemporary.getConfirmUserId());
         }
         User user = UserUtils.getUser();
         ClubConfirmRecord confirmRecord = new ClubConfirmRecord();

+ 4 - 0
src/main/java/com/caimei/modules/user/service/CmSpService.java

@@ -13,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户模块重构-协销人员管理Service
@@ -40,6 +41,9 @@ public class CmSpService extends CrudService<CmSpDao, NewCmSp> {
     public Page<NewCmSp> findPage(Page<NewCmSp> page, NewCmSp newCmSp) {
         return super.findPage(page, newCmSp);
     }
+    public Map<String, Object> findSpUserLoginSum(String spID) {
+        return cmSpDao.findSpUserLoginSum(spID);
+    }
 
     @Transactional(readOnly = false)
     public void update(NewCmSp newCmSp) {

+ 0 - 26
src/main/java/com/caimei/modules/user/service/CmUserService.java

@@ -69,9 +69,7 @@ public class CmUserService extends CrudService<CmUserDao, CmUser> {
     public void unBindClub(CmUser cmUser) {
         cmUser.setName(null);//置空组织名称
         cmUser.setUserIdentity(UserIdentity.NORMAL_USER.getCode());
-        cmUser.setUserPermission(UserPermission.NORMAL.getCode());//用户权限改成普通人
         cmUser.setRegisterUserTypeID(UserType.VISITOR.getCode() + "");//设为游离员工
-        cmUser.setClubStatus(null);
         cmUser.setClubID(null);
         cmUserDao.update(cmUser);
     }
@@ -80,7 +78,6 @@ public class CmUserService extends CrudService<CmUserDao, CmUser> {
     public void unBindShop(CmUser cmUser) {
         cmUser.setName(null);//置空组织名称
         cmUser.setUserIdentity(UserIdentity.NORMAL_USER.getCode());
-        cmUser.setUserPermission(UserPermission.NORMAL.getCode());//用户权限改成普通人
         cmUser.setRegisterUserTypeID(UserType.VISITOR.getCode() + "");//设为游离员工
         cmUser.setManufacturerStatus(null);
         cmUser.setShopID(null);
@@ -97,34 +94,11 @@ public class CmUserService extends CrudService<CmUserDao, CmUser> {
         return cmUserDao.findByCompanyUserID(companyUserID);
     }
 
-    /**
-     * 通过企业用户ID 更新员工状态
-     *
-     * @param clubStatus
-     * @param manufacturerStatus
-     * @param companyUserID
-     */
-    @Transactional(readOnly = false)
-    public void updateEmployeeStatus(Integer userPermission, String clubStatus, String manufacturerStatus, String tipStatus, Integer companyUserID) {
-        cmUserDao.updateEmployeeStatus(userPermission, clubStatus, manufacturerStatus, tipStatus, companyUserID);
-    }
-
     @Transactional(readOnly = false)
     public void updateUserStatus(String manufacturerStatus, Integer userID, String validFlag) {
         cmUserDao.updateUserStatus(manufacturerStatus, userID, validFlag);
     }
 
-    /**
-     * 通过企业用户ID 更新员工权限
-     *
-     * @param companyUserID
-     */
-    @Transactional(readOnly = false)
-    public void updateEmployeePermission(Integer userPermission, Integer companyUserID) {
-        cmUserDao.updateEmployeePermission(userPermission, companyUserID);
-    }
-
-
     /**
      * 根据手机号码查询用户
      *

+ 6 - 0
src/main/java/com/caimei/modules/user/service/NewCmClubService.java

@@ -60,6 +60,12 @@ public class NewCmClubService extends CrudService<NewCmClubDao, NewCmClub> {
     public Page<NewCmClub> findPage(Page<NewCmClub> page, NewCmClub userClub) {
         return super.findPage(page, userClub);
     }
+    public Page<NewCmClub> findProviderList(Page<NewCmClub> page,NewCmClub userClub) {
+        userClub.setPage(page);
+        List<NewCmClub> providerList = newCmClubDao.findProviderList(userClub);
+        page.setList(providerList);
+        return page;
+    }
 
     @Transactional(readOnly = false)
     public void save(NewCmClub userClub) {

+ 2 - 2
src/main/java/com/caimei/modules/user/utils/UserUtils.java

@@ -29,7 +29,7 @@ public class UserUtils {
     public static Integer userPermission(CmUser user) {
         //用户冻结 未审核 未通过 未缴纳 游客权限
         if (user == null || "0".equals(user.getValidFlag()) ||
-                (UserType.CLUB.getCode() == Integer.valueOf(user.getRegisterUserTypeID()) && !ClubStatus.isOnline(user.getClubStatus()))
+                (UserType.CLUB.getCode() == Integer.valueOf(user.getRegisterUserTypeID()))
                 || (UserType.SHOP.getCode() == Integer.valueOf(user.getRegisterUserTypeID()) && !ShopStatus.isOnline(user.getManufacturerStatus()))) {
             return 0;
         }
@@ -39,7 +39,7 @@ public class UserUtils {
         } else if (UserIdentity.isClub(user.getUserIdentity())) {
             //会所用户
             //如果是会所员工 但是会所未上线 普通用户权限
-            if (UserType.isClubEmployee(user.getRegisterUserTypeID()) && !ClubStatus.isOnline(user.getClubStatus())) {
+            if (UserType.isClubEmployee(user.getRegisterUserTypeID())) {
                 return 1;
             }
             //如果是申请成为会所员工 会所还未审核通过 普通用户权限

+ 2 - 5
src/main/java/com/caimei/modules/user/web/CmSpController.java

@@ -250,7 +250,6 @@ public class CmSpController extends BaseController {
         cmUser.setRegisterTime(DateUtils.getDateTime());
         cmUser.setValidFlag(AppKeys.FLAG_NO); // 默认为冻结状态 需要审核
         cmUser.setServiceProviderStatus(ServiceProviderStatus.WAIT_CHECK_DATA.getCode() + "");
-        cmUser.setUserPermission(1);
         cmUser.setRealName(linkMan);
         cmUser.setUserName(linkMan);
         cmUser.setName(linkMan);
@@ -307,7 +306,6 @@ public class CmSpController extends BaseController {
             cmUser.setAuditStatus(AppKeys.FLAG_YES);
             cmUser.setValidFlag(AppKeys.FLAG_YES);
             cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + "");
-            cmUser.setUserPermission(4);
             map.put("msg", "审核已经通过");
         } else {
             // 审核不通过
@@ -410,9 +408,9 @@ public class CmSpController extends BaseController {
             addMessage(redirectAttributes, "上线失败,用户信息异常");
             return "redirect:" + Global.getAdminPath() + "/user/cmSp/?repage";
         } else {
-            cmUser.setValidFlag(AppKeys.FLAG_YES);//解除冻结
+            //解除冻结
+            cmUser.setValidFlag(AppKeys.FLAG_YES);
             cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + "");
-            cmUser.setUserPermission(4);
             cmUserService.update(cmUser);
         }
         newCmSp.setStatus(ServiceProviderStatus.ONLINE.getCode());
@@ -439,7 +437,6 @@ public class CmSpController extends BaseController {
         } else {
             cmUser.setValidFlag(AppKeys.FLAG_NO);//冻结
             cmUser.setServiceProviderStatus(ServiceProviderStatus.FREEZE.getCode() + "");
-            cmUser.setUserPermission(1);
             cmUserService.update(cmUser);
         }
         newCmSp.setStatus(ServiceProviderStatus.FREEZE.getCode());

+ 0 - 8
src/main/java/com/caimei/modules/user/web/CmUserOrganizeController.java

@@ -184,7 +184,6 @@ public class CmUserOrganizeController extends BaseController {
 
     @RequestMapping(value = "onLine")
     public String onLine(CmUser cmUser, Page page, Model model) {
-        cmUser.setClubStatus("90");
         cmUserService.update(cmUser);//更新用户表数据
         NewCmClub newCmClub = new NewCmClub();
         newCmClub.setClubID(Integer.parseInt(cmUser.getClubID()));
@@ -193,7 +192,6 @@ public class CmUserOrganizeController extends BaseController {
         newCmClubService.update(newCmClub);//更新会所表数据
 
         //跳转列表页面
-        cmUser.setClubStatus("");
         if (0 == page.getPageSize() || -1 == page.getPageSize()) page.setPageSize(30);
         cmUser.setPage(page);
         List<CmUser> cmUserList = cmUserDao.findListBuyUserInfo(cmUser);
@@ -205,7 +203,6 @@ public class CmUserOrganizeController extends BaseController {
 
     @RequestMapping(value = "offLine")
     public String offLine(CmUser cmUser, Page page, Model model) {
-        cmUser.setClubStatus("91");
         cmUserService.update(cmUser);//更新用户表数据
         NewCmClub newCmClub = new NewCmClub();
         newCmClub.setClubID(Integer.parseInt(cmUser.getClubID()));
@@ -214,7 +211,6 @@ public class CmUserOrganizeController extends BaseController {
         newCmClubService.update(newCmClub);//更新会所表数据
 
         //跳转列表页面
-        cmUser.setClubStatus("");
         if (0 == page.getPageSize() || -1 == page.getPageSize()) page.setPageSize(30);
         cmUser.setPage(page);
         List<CmUser> cmUserList = cmUserDao.findListBuyUserInfo(cmUser);
@@ -288,7 +284,6 @@ public class CmUserOrganizeController extends BaseController {
         cmUser.setName(newCmClub.getName());
         cmUser.setUserName(newCmClub.getName());
         cmUser.setRealName(newCmClub.getName());
-        cmUser.setClubStatus(String.valueOf(newCmClub.getStatus()));
         //添加用户新增信息
         if (null == userID) {//新增
             cmUser = initUser(cmUser, newCmClub);
@@ -385,9 +380,6 @@ public class CmUserOrganizeController extends BaseController {
         cmUser.setUserBeans(0);
         cmUser.setValidFlag("1");
         cmUser.setAgreeFlag("1");
-        cmUser.setLoginFailTime("0");
-        cmUser.setScanFlag("2");
-        cmUser.setUserPermission(2);
         return cmUser;
     }
 

+ 4 - 282
src/main/java/com/caimei/modules/user/web/NewCmClubController.java

@@ -1,7 +1,6 @@
 package com.caimei.modules.user.web;
 
 import com.caimei.constants.ClubStatus;
-import com.caimei.modules.sys.utils.CmMsgUtils;
 import com.caimei.modules.sys.utils.SMSUtils;
 import com.caimei.modules.user.entity.*;
 import com.caimei.modules.user.service.*;
@@ -31,7 +30,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.Random;
 
 /**
  * 用户模块重构--会所管理Controller
@@ -54,8 +52,6 @@ public class NewCmClubController extends BaseController {
     @Resource
     private CmMessageService cmMessageService;
     @Resource
-    private CmUserbeanshistoryService cmUserbeanshistoryService;
-    @Resource
     private ClubChangeSpReviewService clubChangeSpReviewService;
     @Resource
     private CmSpService cmSpService;
@@ -114,12 +110,8 @@ public class NewCmClubController extends BaseController {
             logger.info(spID + "-======-" + clubID);
             if (StringUtils.isNotBlank(spID) && StringUtils.isNotBlank(clubID)) {
                 //不是直接更换 只是添加一条记录
-//                Integer spId = Integer.parseInt(spID);
                 NewCmClub newCmClub = newCmClubService.get(clubID);
-//                newCmClub.setSpID(spId);
                 NewCmSp newCmSp = cmSpService.get(spID);
-//                newCmClub.setMainServiceProviderID(newCmSp.getMainServiceProviderID());
-//                newCmClubService.update(newCmClub);
                 ClubChangeSp clubChangeSp = new ClubChangeSp();
                 clubChangeSp.setClubID(newCmClub.getClubID());
                 if (null != newCmClub.getSpID()) {
@@ -232,7 +224,6 @@ public class NewCmClubController extends BaseController {
             cmClubinfo = cmClubinfos.get(0);
         }
         cmClubinfo.setClubID(Integer.parseInt(newCmClub.getId()));
-//		cmClubinfo.setGclubID(newCmClub.getGclubID());
         cmClubinfo.setUserID(newCmClub.getUserID());
         model.addAttribute("cmClubinfo", cmClubinfo);
         String wwwServer = Global.getConfig("wwwServer");
@@ -263,193 +254,6 @@ public class NewCmClubController extends BaseController {
         return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage";
     }
 
-    /**
-     * 会所审核
-     *
-     * @param auditStatus
-     * @param auditNote
-     * @param id
-     * @param request
-     * @param response
-     * @return
-     */
-   /* @RequiresPermissions("user:newCmClub:edit")
-    @ResponseBody
-    @RequestMapping(value = "auditClub")
-    public Map<String, Object> auditClub(String auditStatus, String auditNote, String id, HttpServletRequest request, HttpServletResponse response) {
-        Map<String, Object> map = Maps.newLinkedHashMap();
-        String status = "";
-        String smsMessage = "";
-        String currTime = DateUtils.getDateTime();
-        Integer userPermission;
-        try {
-            NewCmClub newCmClub = newCmClubService.get(id);
-            Integer companyUserID = newCmClub.getUserID();
-            CmUser companyUser = cmUserService.get(companyUserID + "");
-            String mobile = companyUser.getBindMobile();
-
-            boolean upByUser = false;
-            CmUser userByMobile = cmUserService.findUserByMobile(mobile);
-            if (userByMobile != null && "33".equals(userByMobile.getRegisterUserTypeID()))
-                // 说明这个会所是通过 个人用户升级而来
-                upByUser = true;
-
-            //会所审核 --
-            // 1、直接注册成为企业会所
-            // 2、个人用户升级成为企业会所
-            //获取企业会所下级用户
-            List<CmUser> cmUsers = cmUserService.findByCompanyUserID(companyUserID);
-            *//**审核处理*//*
-            //审核通过
-            if (StringUtils.equals("1", auditStatus)) {
-                userPermission = 2;
-                status = "90";
-                auditStatus = "1";
-                // 如果该会所有邀请者,并且邀请者是已上线的服务商,则将该服务商设置为该会所的定点服务商
-                //设置协销
-                if (StringUtils.isNotBlank(companyUser.getFromUserID())) {
-                    CmUser fromUser = cmUserService.get(companyUser.getFromUserID() + "");
-                    //协销已上线
-                    if (null != fromUser && fromUser.getRegisterUserTypeID().equals("2") && StringUtils.isNotBlank(fromUser.getServiceProviderID()) && fromUser.getServiceProviderStatus().equals("90")) {
-                        // 获取协销经理ID
-                        NewCmSp newCmSp = cmSpService.get(fromUser.getServiceProviderID());
-                        newCmClub.setDefaultServiceProviderID(Integer.parseInt(fromUser.getServiceProviderID()));
-                        newCmClub.setSpID(Integer.parseInt(fromUser.getServiceProviderID()));
-                        newCmClub.setMainServiceProviderID(newCmSp.getMainServiceProviderID());
-                        newCmClub.setDefaultServiceProviderUpdTime(DateUtils.getDateTime());
-                        newCmClub.setFirstServiceProviderFlag("1");
-                    }
-                }
-                companyUser.setUserPermission(userPermission);
-                //审核通过 采美豆+5000
-                *//*if (StringUtils.isBlank(companyUser.getUserBeans())) {
-                    companyUser.setUserBeans("5000");
-                } else {
-                    companyUser.setUserBeans(5000 + Integer.parseInt(companyUser.getUserBeans()) + "");
-                }
-                //采美豆历史记录
-                CmUserbeanshistory cmUserbeanshistory = new CmUserbeanshistory();
-                cmUserbeanshistory.setUserBeanHistoryTypeID(UserBeanHistoryType.CHECK_ONLINE.getCode() + "");
-                cmUserbeanshistory.setUserID(companyUser.getUserID());
-                cmUserbeanshistory.setPayBeans("5000");
-                cmUserbeanshistory.setInfo("审核上线赠送");
-                cmUserbeanshistory.setAddTime(DateUtils.getDateTime());
-                cmUserbeanshistoryService.save(cmUserbeanshistory);*//*
-                if (upByUser)
-                    smsMessage = "您申请的企业账号已成功通过资料审核,您现有的账号身份已升级为企业员工身份。";
-                else
-                    smsMessage = "恭喜您成功通过资料审核,您可以使用账号" + companyUser.getEmail() + "(或手机号" + companyUser.getBindMobile() + ")在采美登录您的企业账号,开始愉快的采购之旅。";
-            } else {
-                //审核未通过
-                userPermission = 1;
-                companyUser.setUserPermission(0);
-                status = "92";
-                auditStatus = "2";
-                smsMessage = "很遗憾,您的资料信息有误,未通过审核,请登录采美修改资料信息。";
-            }
-            //会所表修改
-            newCmClub.setStatus(Integer.parseInt(status));
-            newCmClub.setAuditTime(currTime);
-            newCmClub.setAuditNote(auditNote);
-            //企业用户表修改
-            companyUser.setValidFlag(AppKeys.FLAG_YES);//正常
-            companyUser.setClubStatus(status);
-            companyUser.setAuditStatus(auditStatus);//同步到用户表的审核信息中
-            companyUser.setAuditNote(auditNote);
-            companyUser.setAuditTime(currTime);
-            newCmClubService.update(newCmClub);
-            cmUserService.update(companyUser);
-            //直接注册成为企业会所 或 升级成为会所
-            if (CollectionUtils.isNotEmpty(cmUsers)) {
-                //个人用户升级成为企业会所
-                cmUserService.updateEmployeeStatus(userPermission, status, null, null, companyUserID);
-            }
-            // 发送系统消息给对应的userID用户
-            String title = "会所资格认证审核结果";
-            String messageContent = "";
-            if (auditStatus.equals("1")) {
-                messageContent = "恭喜您," + title + "【已通过】,恭喜您成功加入采美,祝您开启愉快的采购之旅。";
-            } else {
-                messageContent = title + "【未通过】,原因:" + auditNote;
-            }
-            *//**发送采美消息*//*
-            sendMessage("1", companyUser.getUserID(), title, messageContent);
-            *//**发送短信*//*
-            if (StringUtils.isNotEmpty(mobile)) {
-                SMSUtils.sendSms(mobile, smsMessage);
-            }
-            map.put("success", true);
-            map.put("msg", "操作成功");
-        } catch (Exception e) {
-            logger.debug(e.toString(), e);
-            map.put("success", false);
-            map.put("msg", "操作失败");
-        }
-        return map;
-    }*/
-
-    /**
-     * 检查微信注册的用户是否需要发送短信 checkAndSendSMS:(这里用一句话描述这个方法的作用). <br/>
-     *
-     * @param status
-     * @throws Exception
-     * @author zcp
-     * @since JDK 1.6
-     */
-    private void checkAndSendSMS(NewCmClub newCmClub, CmUser user, String status, boolean clubFlag) throws Exception {
-//        String scanFlag = user.getScanFlag();
-//        newCmClub.setStatus(Integer.parseInt(status));
-//        newCmClubService.update(newCmClub);
-//        int userBeans = 0;
-//        if (user != null && user.getUserBeans() != null) {
-//            userBeans = new Integer(user.getUserBeans());
-//        }
-//        user.setClubStatus(status);
-//        userBeans += 5000;
-//        if (status.equals("90")) {
-//            user.setClubFlag("1");
-//        }
-        // 如果是会所(不包含会所员工),赠送5000采美豆
-//        if (clubFlag) {
-//            user.setUserBeans(userBeans + "");
-//        }
-//        cmUserService.update(user);
-        // 记录采美豆赠送记录 改密码 发短信
-//        if (clubFlag) {
-//            CmUserbeanshistory cmUserbeanshistory = new CmUserbeanshistory();
-//            cmUserbeanshistory.setUserBeanHistoryTypeID(UserBeanHistoryType.CHECK_ONLINE.getCode() + "");
-//            cmUserbeanshistory.setUserID(user.getUserID());
-//            cmUserbeanshistory.setPayBeans("5000");
-//            cmUserbeanshistory.setInfo("审核上线赠送");
-//            cmUserbeanshistory.setAddTime(DateUtils.getDateTime());
-//            cmUserbeanshistoryService.save(cmUserbeanshistory);
-//        }
-    }
-
-    /**
-     * 处理GClub会所状态同步
-     *
-     * @param status
-     * @throws Exception
-     * @author zcp
-     * @since JDK 1.6
-     */
-    public void updateGClubStatus(CmUser user, String status, NewCmClub newCmClub) throws Exception {
-//		if (!StringUtils.isEmpty(user.getUserID().toString())) {
-//			CmGclub cmGclub = new CmGclub();
-//			cmGclub.setUserID(user.getUserID());
-//			cmGclub.setGclubID(newCmClub.getGclubID());
-//			List<CmGclub> gclubs = cmGclubService.findList(cmGclub);
-//			if (gclubs != null && gclubs.size() > 0) {
-//				CmGclub gclub = gclubs.get(0);
-//				gclub.setClubstatus(status);
-//				gclub.setUserID(user.getUserID());
-//				cmGclubService.update(gclub);
-//				cmGempreferralService.updateStatus(gclub.getGclubID().toString(),status);
-//			}
-//		}
-    }
-
     /**
      * 发送消息
      *
@@ -498,27 +302,13 @@ public class NewCmClubController extends BaseController {
         Integer companyUserID = newCmClub.getUserID();
         CmUser cmUser = cmUserService.get(companyUserID + "");
         if (null != cmUser) {
-            cmUser.setClubStatus(ClubStatus.ONLINE.getCode() + "");
-            cmUser.setValidFlag(AppKeys.FLAG_YES);//解除冻结
-            cmUser.setUserPermission(2);
-            //更新所有企业员工状态
-            cmUserService.updateEmployeeStatus(null, ClubStatus.ONLINE.getCode() + "", null, "1", companyUserID);
-            //更新所有审核过的企业员工权限
-            cmUserService.updateEmployeePermission(2, companyUserID);
+            //解除冻结
+            cmUser.setValidFlag(AppKeys.FLAG_YES);
             cmUserService.update(cmUser);
         } else {
             addMessage(redirectAttributes, "上线失败,用户信息异常");
             return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage";
         }
-//fixme zcp GclUb -- club
-//		CmGclub cmGclub = cmGclubService.get(newCmClub.getGclubID()+"");
-//		if(cmGclub!=null){
-//			cmGclub.setClubstatus(ClubStatus.ONLINE.getCode()+"");
-//			cmGclubService.update(cmGclub);
-//		}else {
-//			addMessage(redirectAttributes, "会所上线失败,缺少会所信息");
-//			return "redirect:"+Global.getAdminPath()+"/user/newCmClub/?repage";
-//		}
         newCmClub.setStatus(ClubStatus.ONLINE.getCode());
         newCmClubService.update(newCmClub);
         addMessage(redirectAttributes, "会所上线成功");
@@ -539,64 +329,19 @@ public class NewCmClubController extends BaseController {
         Integer companyUserID = newCmClub.getUserID();
         CmUser cmUser = cmUserService.get(companyUserID + "");
         if (null != cmUser) {
-            cmUser.setClubStatus(ClubStatus.FREEZE.getCode() + "");
-            cmUser.setValidFlag(AppKeys.FLAG_NO);//冻结
-            cmUser.setUserPermission(0);
-            //更新所有企业员工状态 设置未提示
-            cmUserService.updateEmployeeStatus(1, ClubStatus.ONLINE.getCode() + "", null, "0", companyUserID);
+            //冻结
+            cmUser.setValidFlag(AppKeys.FLAG_NO);
             cmUserService.update(cmUser);
         } else {
             addMessage(redirectAttributes, "下线失败,用户信息异常");
             return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage";
         }
-        //fixme zcp gclub -- club
-//		CmGclub cmGclub = cmGclubService.get(newCmClub.getGclubID()+"");
-//		if(cmGclub!=null){
-//			cmGclub.setClubstatus(ClubStatus.FREEZE.getCode()+"");
-//			cmGclubService.update(cmGclub);
-//		}else {
-//			addMessage(redirectAttributes, "会所下线失败,缺少会所信息");
-//			return "redirect:"+Global.getAdminPath()+"/user/newCmClub/?repage";
-//		}
         newCmClub.setStatus(ClubStatus.FREEZE.getCode());
         newCmClubService.update(newCmClub);
         addMessage(redirectAttributes, "会所下线成功");
         return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage";
     }
 
-    //生成随机数字和字母组合
-    public String getStringRandom(int length) {
-        String val = "";
-        Random random = new Random();
-        //length为几位密码
-        for (int i = 0; i < length; i++) {
-            String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
-            //输出字母还是数字
-            if ("char".equalsIgnoreCase(charOrNum)) {
-                //输出是大写字母还是小写字母
-                int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
-                val += (char) (random.nextInt(26) + temp);
-            } else if ("num".equalsIgnoreCase(charOrNum)) {
-                val += String.valueOf(random.nextInt(10));
-            }
-        }
-        return val;
-    }
-
-    /**
-     * 发送采美信息
-     *
-     * @param messageTypeID
-     * @param toUserID
-     * @param title
-     * @param content
-     * @throws Exception
-     */
-    public void sendMessage(String messageTypeID, Integer toUserID, String title, String content) throws Exception {
-        CmMessage cmMessage = CmMsgUtils.getCmMsg(messageTypeID, toUserID, title, content);
-        cmMessageService.save(cmMessage);
-    }
-
     /**
      * @param cmClub
      * @param flag               0 设置分类   1 修改分类
@@ -611,26 +356,6 @@ public class NewCmClubController extends BaseController {
         if (cmClub.getClubID() == null) {
             return jsonModel.error("请求参数异常");
         }
-//        if (StringUtils.isEmpty(flagC)) {
-//            return jsonModel.error("请求参数异常");
-//        }
-//        if ("1".equals(flagC)) {
-//            if (StringUtils.isEmpty(cmClub.getFirstClubType()) ||
-//                    StringUtils.isEmpty(cmClub.getSecondClubType()) ||
-//                    StringUtils.isEmpty(cmClub.getMainpro())) {
-//                return jsonModel.error("请求参数异常");
-//            }
-//        }
-//
-//        if ("0".equals(flagC)) {
-//            if (StringUtils.isEmpty(cmClub.getFirstClubType()) ||
-//                    StringUtils.isEmpty(cmClub.getSecondClubType()) ||
-//                    StringUtils.isEmpty(cmClub.getMainpro()) ||
-//            StringUtils.isEmpty(cmClub.getMedicalPracticeLicenseImg()))
-//            {
-//                return jsonModel.error("请求参数异常");
-//            }
-//        }
 
         NewCmClub dbClub = newCmClubService.get(cmClub.getClubID().toString());
         if ("1".equals(cmClub.getFirstClubType())) {
@@ -645,9 +370,6 @@ public class NewCmClubController extends BaseController {
         }
         dbClub.setFirstClubType(cmClub.getFirstClubType());
         dbClub.setMainpro(cmClub.getMainpro());
-
-//        if ("0".equals(flagC))
-//            dbClub.setMedicalPracticeLicenseImg(cmClub.getMedicalPracticeLicenseImg());
         newCmClubService.update(dbClub);
         addMessage(redirectAttributes, "操作成功");
         return jsonModel.success(Global.getAdminPath() + "/user/newCmClub/?repage");

+ 15 - 109
src/main/java/com/caimei/modules/user/web/NewCmShopController.java

@@ -410,19 +410,23 @@ public class NewCmShopController extends BaseController {
         Page<CmOperationUser> page = cmOperationUserService.findPage(new Page<CmOperationUser>(request, response), cmOperationUser);
         if (null != page) {
             List<CmOperationUser> list = page.getList();
-            for (CmOperationUser user : list) {//判断邀请码是否有效
-                String status = user.getStatus();//1未绑定,2已绑定
+            for (CmOperationUser user : list) {
+                //判断邀请码是否有效//1未绑定,2已绑定
+                String status = user.getStatus();
                 if (StringUtils.equals("2", status)) {
-                    user.setEffectiveFlag("2");//邀请码是否有效 1有效,2已使用,3已失效
+                    //邀请码是否有效 1有效,2已使用,3已失效
+                    user.setEffectiveFlag("2");
                 } else {
                     Date invitationCodeTime = user.getInvitationCodeTime();
                     if (null != invitationCodeTime) {
                         Calendar calendar = new GregorianCalendar();
                         calendar.setTime(invitationCodeTime);
-                        calendar.add(Calendar.DATE, 3);// num为增加的天数,可以改变的
+                        // num为增加的天数,可以改变的
+                        calendar.add(Calendar.DATE, 3);
                         invitationCodeTime = calendar.getTime();
                         boolean before = invitationCodeTime.before(new Date());
-                        if (before) {//如果验证码时间加上168小时小于当前时间则已过期
+                        if (before) {
+                            //如果验证码时间加上168小时小于当前时间则已过期
                             user.setEffectiveFlag("3");
                         } else {
                             user.setEffectiveFlag("1");
@@ -431,103 +435,12 @@ public class NewCmShopController extends BaseController {
                 }
             }
         }
-        model.addAttribute("cmOperationUser", cmOperationUser);//把用户ID等参数带入
+        //把用户ID等参数带入
+        model.addAttribute("cmOperationUser", cmOperationUser);
         model.addAttribute("page", page);
         return "modules/userNew/cmShopOperation";
     }
 
-//    /**
-//     * 供应商审核
-//     *
-//     * @param auditStatus
-//     * @param auditNote
-//     * @param id
-//     * @param request
-//     * @param response
-//     * @return
-//     */
-//    @RequiresPermissions("user:newCmShop:edit")
-//    @ResponseBody
-//    @RequestMapping(value = "auditShop")
-//    public Map<String, Object> auditShop(String auditStatus, String auditNote, String id, HttpServletRequest request, HttpServletResponse response) {
-//        Map<String, Object> map = Maps.newLinkedHashMap();
-//        Integer status;
-//        String smsMessage = "";
-//        String currTime = DateUtils.getDateTime();
-//        Integer userPermission;
-//        try {
-//            NewCmShop newCmShop = newCmShopService.get(id);
-//            Integer companyUserID = newCmShop.getUserID();
-//            CmUser companyUser = cmUserService.get(companyUserID + "");
-//            //供应商审核 --
-//            // 1、直接注册成为企业供应商
-//            // 2、个人用户升级成为企业供应商
-//            //获取企业供应商下级用户
-//            List<CmUser> cmUsers = cmUserService.findByCompanyUserID(companyUserID);
-//            status = newCmShop.getStatus();//当前供应商的状态
-//            // 发送系统消息给对应的userID用户
-//            String title = "供应商资格认证审核结果";
-//            String messageContent = "";
-//            /**审核处理*/
-//            //审核通过
-//            if (StringUtils.equals("1", auditStatus)) {
-//                auditStatus = "1";
-//                userPermission = 3;
-//                companyUser.setUserPermission(userPermission);
-//                if (ShopStatus.WAIT_CHECK_DATA.getCode() == status || ShopStatus.CHECK_DATA_FAIL.getCode() == status) {
-//                    //客服审核  生成交易信息,用于财务交易管理审核
-//                    status = ShopStatus.WAIT_CASH_DEPOSIT.getCode();//待缴纳保证金
-//                } else {
-//                    //财务审核 审核通过即可上线
-//                    status = ShopStatus.ONLINE.getCode();//已上线
-//                    messageContent = "恭喜您," + title + "【已通过】,恭喜您成功加入采美,祝您开店愉快,生意兴隆!";
-//                    smsMessage = "恭喜您成功通过资料审核,您可以使用账号" + companyUser.getEmail() + "在采美登录您的企业账号,开始愉快的采购之旅。";
-//                }
-//            } else {
-//                //审核未通过
-//                userPermission = 1;
-//                companyUser.setUserPermission(0);
-//                status = 92;
-//                auditStatus = "2";
-//                messageContent = title + "【未通过】,原因:" + auditNote;
-//                smsMessage = "很遗憾,您的资料信息有误,未通过审核,请登录采美修改资料信息。";
-//            }
-//            //供应商表修改
-//            newCmShop.setStatus(status);
-//            newCmShop.setAuditTime(currTime);
-//            newCmShop.setAuditNote(auditNote);
-//            //企业用户表修改
-//            companyUser.setValidFlag(AppKeys.FLAG_YES);//正常
-//            companyUser.setManufacturerStatus(status + "");
-//            companyUser.setAuditStatus(auditStatus);//同步到用户表的审核信息中
-//            companyUser.setAuditNote(auditNote);
-//            companyUser.setAuditTime(currTime);
-//            newCmShopService.update(newCmShop);
-//            cmUserService.update(companyUser);
-//
-//            //直接注册成为企业供应商 或 升级成为供应商
-//            if (CollectionUtils.isNotEmpty(cmUsers)) {
-//                //个人用户升级成为企业供应商
-//                cmUserService.updateEmployeeStatus(userPermission, null, status + "", null, companyUserID);
-//            }
-//
-//            /**发送采美消息*/
-//            sendMessage("1", companyUser.getUserID(), title, messageContent);
-//            /**发送短信*/
-//            String mobile = companyUser.getBindMobile();
-//            if (StringUtils.isNotEmpty(mobile)) {
-//                SMSUtils.sendSms(mobile, smsMessage);
-//            }
-//            map.put("success", true);
-//            map.put("msg", "操作成功");
-//        } catch (Exception e) {
-//            logger.debug(e.toString(), e);
-//            map.put("success", false);
-//            map.put("msg", "操作失败");
-//        }
-//        return map;
-//    }
-
     /**
      * 修改密码
      *
@@ -709,15 +622,6 @@ public class NewCmShopController extends BaseController {
 
         CmOperationalLogs sysLog = new CmOperationalLogs();
 
-//        if (newCmShops.getMaintenanceFee() == "0") {
-//            if (!newCmShop.getMaintenanceFee().equals("0")) {
-//                list.add("新增了线上分账商户号");
-//            }
-//        }  else {
-//            if (!newCmShop.getMaintenanceFee().equals(newCmShops.getMaintenanceFee())) {
-//                list.add("修改了线上分账商户号");
-//            }
-//        }
         if (newCmShops.getName() == null) {
             if (!newCmShop.getName().equals("")) {
                 list.add("新增了公司名称");
@@ -962,7 +866,8 @@ public class NewCmShopController extends BaseController {
             return jsonModel.error("请求参数异常");
         }
         NewCmShop dbShop = newCmShopService.get(cmShop.getShopID().toString());
-        if ("1".equals(cmShop.getFirstShopType())) { //医疗
+        if ("1".equals(cmShop.getFirstShopType())) {
+            //医疗
             if (StringUtils.isEmpty(cmShop.getSecondShopType())) {
                 return jsonModel.error("请选择二级分类");
             } else {
@@ -975,7 +880,8 @@ public class NewCmShopController extends BaseController {
             dbShop.setMedicalPracticeLicenseImg2(cmShop.getMedicalPracticeLicenseImg2());
             dbShop.setMedicalPracticeLicenseImg3(cmShop.getMedicalPracticeLicenseImg3());
         }
-        if ("2".equals(cmShop.getFirstShopType())) { // 非医疗
+        if ("2".equals(cmShop.getFirstShopType())) {
+            // 非医疗
             dbShop.setSecondShopType("");
             dbShop.setMedicalPracticeLicenseImg1("");
             dbShop.setMedicalPracticeLicenseImg2("");

+ 31 - 40
src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java

@@ -73,16 +73,12 @@ public class AgencyController extends BaseController {
     @Resource
     private CmRemaksService cmRemaksService;
     @Resource
-    private CmUserOrganizeService cmUserOrganizeService;
-    @Resource
     private CmUserService cmUserService;
     @Resource
     private CmClubinfoService cmClubinfoService;
     @Resource
     private CmMessageService cmMessageService;
     @Resource
-    private CmUserbeanshistoryService cmUserbeanshistoryService;
-    @Resource
     private ClubChangeSpReviewService clubChangeSpReviewService;
     @Resource
     private CmBehaviorRecordService cmBehaviorRecordService;
@@ -101,8 +97,6 @@ public class AgencyController extends BaseController {
     @Resource
     private NewCmClubDao newCmClubDao;
     @Resource
-    private VisitRemarkDao visitRemarkDao;
-    @Resource
     private ClubPortraitService portraitService;
 
     @Value("${wwwServer}")
@@ -177,7 +171,32 @@ public class AgencyController extends BaseController {
         model.addAttribute("spNameList", spNameList);
         return "modules/userNew/cmAgencyList";
     }
-
+    /**
+     * 功能描述:新分配机构跟踪管理
+     *
+     * @param newCmClub
+     * @param request
+     * @param response
+     * @param model
+     * @return [newCmSp, request, response, model]
+     * @auther: Kaick
+     * @date: 2023/8/25 14:50
+     */
+    @RequestMapping(value = {"cmSpClubTrackList"})
+    public String cmSpClubTrackList(NewCmClub newCmClub, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if (null==newCmClub.getProviderTime()) {
+            Date date = new Date();
+            date.setTime(date.getTime() - 24 * 60 * 60 * 1000);
+            newCmClub.setProviderTime(date);
+        }
+        newCmClub.setNewDeal(1);
+        Page<NewCmClub> page = newCmClubService.findProviderList(new Page<NewCmClub>(request, response, 20), newCmClub);
+        // 协销下拉
+        List<ServiceProviderModel> spNameList = newCmClubDao.spNameList();
+        model.addAttribute("spNameList", spNameList);
+        model.addAttribute("page", page);
+        return "modules/userNew/cmSpClubTrackList";
+    }
     /**
      * 查看运营人员
      *
@@ -228,7 +247,6 @@ public class AgencyController extends BaseController {
      * @return
      */
     @RequestMapping(value = "online")
-//    @OperationLogAnnotation(operType = "更改状态", operModul = "设置为已上线")
     @RequiresPermissions("user:newCmClub:edit")
     public String onLine(NewCmClub newCmClub, Model model, RedirectAttributes redirectAttributes) {
         OperationalLogs sysLog = new OperationalLogs();
@@ -251,13 +269,7 @@ public class AgencyController extends BaseController {
         Integer companyUserID = newCmClub.getUserID();
         CmUser cmUser = cmUserService.get(companyUserID + "");
         if (null != cmUser) {
-            cmUser.setClubStatus(ClubStatus.ONLINE.getCode() + "");
             cmUser.setValidFlag(AppKeys.FLAG_YES);//解除冻结
-            cmUser.setUserPermission(2);
-            //更新所有企业员工状态
-            cmUserService.updateEmployeeStatus(null, ClubStatus.ONLINE.getCode() + "", null, "1", companyUserID);
-            //更新所有审核过的企业员工权限
-            cmUserService.updateEmployeePermission(2, companyUserID);
             cmUserService.update(cmUser);
         } else {
             addMessage(redirectAttributes, "上线失败,用户信息异常");
@@ -289,13 +301,12 @@ public class AgencyController extends BaseController {
      */
     @RequestMapping(value = "offline")
     @RequiresPermissions("user:newCmClub:edit")
-    public String offLine(NewCmClub newCmClub, Model model, RedirectAttributes redirectAttributes) {
+    public String offLine(NewCmClub newCmClub, RedirectAttributes redirectAttributes) {
         Integer companyUserID = newCmClub.getUserID();
         CmUser cmUser = cmUserService.get(companyUserID + "");
         if (null != cmUser) {
-            cmUser.setClubStatus(ClubStatus.FREEZE.getCode() + "");
-            cmUser.setValidFlag(AppKeys.FLAG_NO);//冻结
-            cmUser.setUserPermission(0);
+            //冻结
+            cmUser.setValidFlag(AppKeys.FLAG_NO);
             OperationalLogs sysLog = new OperationalLogs();
             sysLog.setOperationtime(new Date());
             sysLog.setContact(newCmClub.getLinkMan());
@@ -309,11 +320,9 @@ public class AgencyController extends BaseController {
             //调用service保存SysLog实体类到数据库
             if (!"".equals(sysLog.getActioncontent())) {
                 if (sysLog.getInstitutionName() != null && sysLog.getContact() != null) {
-                    int i = sysLogService.insert(sysLog);
+                    sysLogService.insert(sysLog);
                 }
             }
-            //更新所有企业员工状态 设置未提示
-            cmUserService.updateEmployeeStatus(1, ClubStatus.ONLINE.getCode() + "", null, "0", companyUserID);
             cmUserService.update(cmUser);
         } else {
             addMessage(redirectAttributes, "下线失败,用户信息异常");
@@ -1095,7 +1104,7 @@ public class AgencyController extends BaseController {
         }
         return map;
     }
-//11111111q
+
     /**
      * 机构审核
      *
@@ -1108,14 +1117,12 @@ public class AgencyController extends BaseController {
      */
     @RequiresPermissions("user:newCmClub:edit")
     @ResponseBody
-//    @OperationLogAnnotation(operType = "审核")
     @RequestMapping(value = "auditClub")
     public Map<String, Object> auditClub(String auditStatus, String auditNote, String id, HttpServletRequest request, HttpServletResponse response) {
         Map<String, Object> map = Maps.newLinkedHashMap();
         String status = "";
         String smsMessage = "";
         String currTime = DateUtils.getDateTime();
-        Integer userPermission;
         OperationalLogs sysLog = new OperationalLogs();
 
 
@@ -1161,11 +1168,9 @@ public class AgencyController extends BaseController {
                 messageCenter.setAccountType(5);
                 messageCenterDao.addMessageCenter(messageCenter);
 
-                userPermission = 2;
                 status = "90";
                 auditStatus = "1";
                 companyUser.setRegisterUserTypeID("3");
-                companyUser.setUserPermission(userPermission);
 
                 try {
                     logger.info("********资质机构审核成功微信公众号推送********");
@@ -1218,8 +1223,6 @@ public class AgencyController extends BaseController {
                     logger.error("【资质机构审核失败通知】获取微信公众号access_token异常!", e);
                 }
                 //审核未通过,普通机构权限
-                userPermission = 5;
-                companyUser.setUserPermission(userPermission);
                 status = "92";
                 auditStatus = "2";
                 smsMessage = "您的机构升级资质机构失败!快戳采美网站链接www.caimei365.com或微信搜索“采美采购商城”小程序登录采美平台修改升级信息重新提交审核。" +
@@ -1249,17 +1252,11 @@ public class AgencyController extends BaseController {
             newCmClub.setCheckMan(UserUtils.getUser().getName());
             //企业用户表修改
             companyUser.setValidFlag(AppKeys.FLAG_YES);//正常
-            companyUser.setClubStatus(status);
             companyUser.setAuditStatus(auditStatus);//同步到用户表的审核信息中
             companyUser.setAuditNote(auditNote);
             companyUser.setAuditTime(currTime);
             newCmClubService.update(newCmClub);
             cmUserService.update(companyUser);
-            //直接注册成为企业机构 或 升级成为机构
-            if (CollectionUtils.isNotEmpty(cmUsers)) {
-                //个人用户升级成为企业机构
-                cmUserService.updateEmployeeStatus(userPermission, status, null, null, companyUserID);
-            }
             // 发送系统消息给对应的userID用户
             String title = "机构资格认证审核结果";
             String messageContent = "";
@@ -1383,19 +1380,13 @@ public class AgencyController extends BaseController {
                 }
                 //用户身份  1、协销 2、会员机构 3、供应商 4.普通机构
                 cmUser.setUserIdentity(2);
-                //用户权限  2 会员机构 3 供应商 4 协销 5 普通机构
-                cmUser.setUserPermission(2);
                 //见枚举UserType(1供应商,2协销经理,32协销,3会员机构,4普通机构)
                 cmUser.setRegisterUserTypeID("3");
-                cmUser.setClubStatus("90");
             } else {
                 //用户身份  1、协销 2、会员机构 3、供应商 4.普通机构
                 cmUser.setUserIdentity(4);
-                //用户权限  2 会员机构 3 供应商 4 协销 5 普通机构
-                cmUser.setUserPermission(5);
                 //见枚举UserType(1供应商,2协销经理,32协销,3会员机构,4普通机构)
                 cmUser.setRegisterUserTypeID("4");
-                cmUser.setClubStatus("90");
             }
             cmUserService.update(cmUser);
             if (cmClub.getStatus() != 90) {

+ 163 - 14
src/main/java/com/caimei/modules/user/web/newUser/SpController.java

@@ -1,5 +1,6 @@
 package com.caimei.modules.user.web.newUser;
 
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.constants.ServiceProviderStatus;
 import com.caimei.constants.UserIdentity;
 import com.caimei.constants.UserType;
@@ -9,13 +10,19 @@ import com.caimei.modules.project.dao.ClubDao;
 import com.caimei.modules.project.dao.ServiceProviderDao;
 import com.caimei.modules.project.model.ClubModel;
 import com.caimei.modules.project.model.ServiceProviderModel;
+import com.caimei.modules.sys.utils.SMSUtils;
 import com.caimei.modules.sys.utils.ValidateUtils;
 import com.caimei.modules.user.aop.OperationLogAnnotation;
+import com.caimei.modules.user.dao.NewCmClubDao;
 import com.caimei.modules.user.entity.*;
 import com.caimei.modules.user.service.*;
-import com.caimei.utils.AppKeys;
-import com.caimei.utils.DateUtils;
-import com.caimei.utils.MD5Utils;
+import com.caimei.modules.utils.MessageUtil;
+import com.caimei.modules.utils.RequestUtil;
+import com.caimei.modules.utils.message.InsideMessage;
+import com.caimei.modules.utils.message.MessageModel;
+import com.caimei.modules.utils.message.MqInfo;
+import com.caimei.modules.utils.message.enums.MessageType;
+import com.caimei.utils.*;
 import com.google.common.collect.Maps;
 import com.thinkgem.jeesite.common.config.Global;
 import com.thinkgem.jeesite.common.persistence.Page;
@@ -36,11 +43,10 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Description
@@ -68,6 +74,8 @@ public class SpController extends BaseController {
     private SysLogService sysLogService;
     @Resource
     private NewCmClubService newCmClubService;
+    @Resource
+    private NewCmClubDao newCmClubDao;
 
     @ModelAttribute
     public NewCmSp get(@RequestParam(required = false) String id) {
@@ -130,6 +138,7 @@ public class SpController extends BaseController {
                     }
                     // 查询serviceprovider协销表
                     List<ServiceProviderModel> serviceprovider = serviceProviderDao.getServiceproviderById(cssp.getNewSpID());
+
                     // 查询cm_bind表
                     if (CollectionUtils.isNotEmpty(serviceprovider)) {
                         ServiceProviderModel serviceProvider = serviceprovider.get(0);
@@ -174,6 +183,68 @@ public class SpController extends BaseController {
                         if (null != serviceProvider.getServiceProviderID()) {
                             sysLogService.insetProvider(serviceProvider.getServiceProviderID(), clubId, username);
                         }
+                        //短信
+                        if (StringUtils.isNotEmpty(serviceProvider.getContractMobile())) {
+                            NewCmClub newCmClub = newCmClubService.get(clubId.toString());
+                            ServiceProviderModel oldServiceprovider = serviceProviderDao.getServiceproviderById(cssp.getOldSpID()).get(0);
+
+                            //站内信
+                            MessageModel<InsideMessage> insideMessageMessageModel = new MessageModel<>();
+                            insideMessageMessageModel.code(MessageType.WEB_INSIDE_MESSAGE)
+                                    .mqInfo(new MqInfo().topic("MessageLine").delay(1).async(1))
+                                    .info(new InsideMessage()
+                                            .userType(3)
+                                            .messageType(3)
+                                            .shopTieredType(2)
+                                            .name(newCmClub.getName())
+                                            .userName(newCmClub.getLinkMan())
+                                            .mobile(newCmClub.getContractMobile())
+                                            .superUserName(oldServiceprovider.getName())
+                                            .thisId(serviceProvider.getServiceProviderID())
+                                            .clubId(newCmClub.getClubID())
+                                    );
+                            MessageUtil.sendMessage(insideMessageMessageModel);
+                            if(1342!=serviceProvider.getServiceProviderID()){
+                                insideMessageMessageModel.info(new InsideMessage()
+                                        .userType(3)
+                                        .messageType(3)
+                                        .shopTieredType(3)
+                                        .name(newCmClub.getName())
+                                        .userName(newCmClub.getLinkMan())
+                                        .mobile(newCmClub.getContractMobile())
+                                        .superUserName(serviceProvider.getName())
+                                        .thisId(oldServiceprovider.getServiceProviderID())
+                                        .clubId(newCmClub.getClubID())
+                                );
+                                MessageUtil.sendMessage(insideMessageMessageModel);
+                                insideMessageMessageModel.info(new InsideMessage()
+                                        .userType(1)
+                                        .messageType(3)
+                                        .shopTieredType(6)
+                                        .userName(serviceProvider.getName())
+                                        .mobile(serviceProvider.getContractMobile())
+                                        .clubId(newCmClub.getClubID())
+                                );
+                                MessageUtil.sendMessage(insideMessageMessageModel);
+                                SMSUtils.sendSms(4, newCmClub.getContractMobile(), "【采美365】因公司内部人员调整需要,采美平台已为您更换客户经理。客户经理【" + serviceProvider.getName() + "】,手机号【" + serviceProvider.getContractMobile() + "】。");
+                                SMSUtils.sendSms(4, serviceProvider.getContractMobile(), "【采美365】系统已为你分配机构客户,请及时跟进。机构名称【" + newCmClub.getName() + "】,联系人【" + newCmClub.getLinkMan() + "】,手机号【" + newCmClub.getContractMobile() + "】,上一任销售【" + oldServiceprovider.getName() + "】。");
+                                SMSUtils.sendSms(4, oldServiceprovider.getContractMobile(), "【采美365】系统已将你的机构客户转移给其他销售人员,你已无权管理该客户。机构名称【" + newCmClub.getName() + "】,联系人【" + newCmClub.getLinkMan() + "】,手机号【" + newCmClub.getContractMobile() + "】,下一任销售【" + serviceProvider.getName() + "】。");
+                            }else {
+                                insideMessageMessageModel.info(new InsideMessage()
+                                        .userType(3)
+                                        .messageType(3)
+                                        .shopTieredType(8)
+                                        .name(newCmClub.getName())
+                                        .userName(newCmClub.getLinkMan())
+                                        .mobile(newCmClub.getContractMobile())
+                                        .thisId(oldServiceprovider.getServiceProviderID())
+                                        .clubId(newCmClub.getClubID())
+                                );
+                                MessageUtil.sendMessage(insideMessageMessageModel);
+                                SMSUtils.sendSms(4, oldServiceprovider.getContractMobile(), "【采美365】系统已将你的机构客户进行回收,你已无权管理该客户。机构名称【" + newCmClub.getName() + "】,联系人【"+ newCmClub.getLinkMan() +"】,手机号【"+ newCmClub.getContractMobile() +"】。");
+                            }
+
+                        }
                     } else {
                         map.put("success", false);
                         map.put("msg", "操作失败");
@@ -242,6 +313,82 @@ public class SpController extends BaseController {
         return "modules/userNew/cmSpList";
     }
 
+    /**
+     * 功能描述: 机构活跃分析列表
+     *
+     * @param newCmSp
+     * @param request
+     * @param response
+     * @param model
+     * @return [newCmSp, request, response, model]
+     * @auther: Kaick
+     * @date: 2023/8/25 14:50
+     */
+    @RequestMapping(value = {"cmSpLivelyClubList"})
+    public String cmSpLivelyClubList(NewCmSp newCmSp, HttpServletRequest request, HttpServletResponse response, Model model) {
+        newCmSp.setStatus(90);
+        Page<NewCmSp> page = cmSpService.findPage(new Page<NewCmSp>(request, response), newCmSp);
+        page.getList().forEach(s->{
+            Map<String, Object> spUserLoginSum = cmSpService.findSpUserLoginSum(s.getServiceProviderID().toString());
+            Integer loginSum = Integer.valueOf(spUserLoginSum.get("loginSum").toString());
+            Integer not_loginSum = Integer.valueOf(spUserLoginSum.get("not_loginSum").toString());
+            //        机构活跃与不活跃占比计算方法,例如:机构活跃数/机构活跃数+机构不活跃数(60/(60+30)=0.666...),保留小数点后2位,四舍五入,0.67;
+            BigDecimal livelyClubProportion = new BigDecimal((loginSum + not_loginSum) != 0 ?(double) loginSum / (loginSum + not_loginSum) * 100 : 0).setScale(2, RoundingMode.UP);
+            s.setLivelyClub(loginSum);
+            s.setNolivelyClub(not_loginSum);
+            s.setLivelyClubProportion(livelyClubProportion);
+            s.setNolivelyClubProportion(MathUtil.sub(100, livelyClubProportion).setScale(2));
+        });
+        Map<String, Object> spUserLoginSum = cmSpService.findSpUserLoginSum(null);
+        Integer loginSum = Integer.valueOf(spUserLoginSum.get("loginSum").toString());
+        Integer not_loginSum = Integer.valueOf(spUserLoginSum.get("not_loginSum").toString());
+        //        机构活跃与不活跃占比计算方法,例如:机构活跃数/机构活跃数+机构不活跃数(60/(60+30)=0.666...),保留小数点后2位,四舍五入,0.67;
+        BigDecimal livelyClubProportion = new BigDecimal((loginSum + not_loginSum) != 0 ?(double) loginSum / (loginSum + not_loginSum) * 100 : 0).setScale(2, RoundingMode.UP);
+        model.addAttribute("livelyClub", loginSum);
+        model.addAttribute("nolivelyClub", not_loginSum);
+        model.addAttribute("livelyClubProportion", livelyClubProportion);
+        model.addAttribute("nolivelyClubProportion", MathUtil.sub(100, livelyClubProportion).setScale(2));
+        model.addAttribute("page", page);
+        return "modules/userNew/cmSpLivelyClubList";
+    }
+
+
+
+    /**
+     * 功能描述: 机构活跃分析查看详情
+     *
+     * @param request
+     * @param response
+     * @param model
+     * @return [newCmSp, request, response, model]
+     * @auther: Kaick
+     * @date: 2023/8/25 14:50
+     */
+    @RequestMapping(value = {"cmSpLivelyClubFrom"})
+    public String cmSpLivelyClubFrom(NewCmClub newCmClub, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if (StringUtils.isBlank(newCmClub.getStartLoginTime())&&StringUtils.isBlank(newCmClub.getEndLoginTime())) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.MONTH, -6);
+            newCmClub.setStartLoginTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()));
+        }
+        newCmClub.setStatus(90);
+        Page<NewCmClub> page = newCmClubService.findPage(new Page<NewCmClub>(request, response, 20), newCmClub);
+        Map<String, Object> spUserLoginSum = cmSpService.findSpUserLoginSum(newCmClub.getSpID().toString());
+        Integer loginSum = Integer.valueOf(spUserLoginSum.get("loginSum").toString());
+        Integer not_loginSum = Integer.valueOf(spUserLoginSum.get("not_loginSum").toString());
+        //        机构活跃与不活跃占比计算方法,例如:机构活跃数/机构活跃数+机构不活跃数(60/(60+30)=0.666...),保留小数点后2位,四舍五入,0.67;
+        BigDecimal livelyClubProportion = new BigDecimal((loginSum + not_loginSum) != 0 ? (double)loginSum / (loginSum + not_loginSum) * 100 : 0).setScale(2, RoundingMode.UP);
+        model.addAttribute("livelyClub", loginSum);
+        model.addAttribute("nolivelyClub", not_loginSum);
+        model.addAttribute("livelyClubProportion", livelyClubProportion);
+        model.addAttribute("nolivelyClubProportion", MathUtil.sub(100, livelyClubProportion).setScale(2));
+        model.addAttribute("spId", newCmClub.getSpID());
+        model.addAttribute("page", page);
+        return "modules/userNew/cmSpLivelyClubFrom";
+    }
+
+
+
     /**
      * 添加协销人员
      *
@@ -305,6 +452,7 @@ public class SpController extends BaseController {
         }
         NewCmSp cmSp = new NewCmSp();
         CmUser cmUser = new CmUser();
+        cmSp.setName(linkMan);
         cmSp.setLinkMan(linkMan);
         cmSp.setContractMobile(mobile);
         if ("1".equals(duty)) {
@@ -331,17 +479,16 @@ public class SpController extends BaseController {
         }
         cmUser.setUserOrganizeID(0);
         cmUser.setMobile(mobile);
+        cmUser.setBindMobile(mobile);
         cmUser.setUserIdentity(UserIdentity.MAKER.getCode());
         cmUser.setRegisterTime(DateUtils.getDateTime());
         cmUser.setServiceProviderStatus(ServiceProviderStatus.WAIT_CHECK_DATA.getCode() + "");
-        cmUser.setUserPermission(4);
         cmUser.setRealName(linkMan);
         cmUser.setUserName(linkMan);
         cmUser.setName(linkMan);
         cmUser.setAuditStatus(AppKeys.FLAG_YES);
         cmUser.setValidFlag(AppKeys.FLAG_YES);
         cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + "");
-        cmUser.setUserPermission(4);
         cmUser.setAuditTime(DateUtils.getDateTime());
 
         cmUserService.save(cmUser);
@@ -370,9 +517,9 @@ public class SpController extends BaseController {
             addMessage(redirectAttributes, "上线失败,用户信息异常");
             return "redirect:" + Global.getAdminPath() + "/new/user/cmSp/cmSpList/?repage";
         } else {
-            cmUser.setValidFlag(AppKeys.FLAG_YES);//解除冻结
+            //解除冻结
+            cmUser.setValidFlag(AppKeys.FLAG_YES);
             cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + "");
-            cmUser.setUserPermission(4);
             cmUserService.update(cmUser);
         }
         newCmSp.setStatus(ServiceProviderStatus.ONLINE.getCode());
@@ -397,9 +544,9 @@ public class SpController extends BaseController {
             addMessage(redirectAttributes, "下线失败,用户信息异常");
             return "redirect:" + Global.getAdminPath() + "/new/user/cmSp/cmSpList/?repage";
         } else {
-            cmUser.setValidFlag(AppKeys.FLAG_NO);//冻结
+            //冻结
+            cmUser.setValidFlag(AppKeys.FLAG_NO);
             cmUser.setServiceProviderStatus(ServiceProviderStatus.FREEZE.getCode() + "");
-            cmUser.setUserPermission(1);
             cmUserService.update(cmUser);
         }
         newCmSp.setStatus(ServiceProviderStatus.FREEZE.getCode());
@@ -457,8 +604,9 @@ public class SpController extends BaseController {
         if ("0".equals(newCmSp.getPosition())) {
             cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); // 设置为协销员工
         }
-
+        newCmSp.setName(newCmSp.getLinkMan());
         cmUser.setMobile(newCmSp.getContractMobile());
+        cmUser.setBindMobile(newCmSp.getContractMobile());
         cmSpService.save(newCmSp);
         cmUserService.update(cmUser);
         addMessage(redirectAttributes, "保存协销人员管理成功");
@@ -485,4 +633,5 @@ public class SpController extends BaseController {
         return "redirect:" + Global.getAdminPath() + "/serviceteam/cmServiceteamRole/?repage";
     }
 
+
 }

+ 78 - 0
src/main/java/com/caimei/modules/utils/MessageUtil.java

@@ -0,0 +1,78 @@
+package com.caimei.modules.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.caimei.modules.utils.message.InsideMessage;
+import com.caimei.modules.utils.message.MessageModel;
+import com.caimei.modules.utils.message.MqInfo;
+import com.caimei.modules.utils.message.WechatTemplateMessage;
+import com.caimei.modules.utils.message.enums.MessageType;
+import com.caimei.utils.HttpRequest;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.thinkgem.jeesite.common.config.Global;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+public class MessageUtil {
+    protected static Logger logger = LoggerFactory.getLogger(MessageUtil.class);
+
+    public static void sendMessage(MessageModel model) {
+        try {
+            String coreServer = Global.getConfig("caimei.core");
+            String url = coreServer + "/tools/message/send";
+            logger.info("url>>>>" + url);
+            String result = RequestUtil.sendPost(url, new ObjectMapper().writeValueAsString(model),"application/json");
+            JSONObject parseObject = JSONObject.parseObject(result);
+            System.out.println(parseObject);
+            Integer code = parseObject.getInteger("code");
+            if (code != 0) {
+                logger.info("审批消息推送失败>>>>" + model.info());
+            }else {
+                logger.info("审批消息推送成功>>>>" + model.info());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("审批消息推送失败>>>" + e);
+        }
+    }
+
+    public static void main(String[] args) {
+
+        //微信模板消息
+        ArrayList<String> keyWords = new ArrayList<>();
+        keyWords.add("name"+"...等"+7+"家机构客户");
+        keyWords.add("pageLabel");
+        keyWords.add("2023-09-12");
+        MessageModel<WechatTemplateMessage> wechatTemplateMessageMessageModel = new MessageModel<WechatTemplateMessage>()
+                .code(MessageType.WECHAT_TEMPLATE_MESSAGE)
+                .mqInfo(new MqInfo().topic("MessageLine").delay(3).async(0))
+                .info(new WechatTemplateMessage()
+                        .first("")
+                        .openId("o9nzn5yD6IOcFuhG4b3OG1droVJw")
+                        .appid("wxf3cd4ae0cdd11c36")
+                        .templateId("Zd7ewJw9-bN-gIgra9flKW96W3YehikRPPkDXPfhmQ0")
+                        .keyWords(keyWords)
+                        .remark("为了更好给您服务,请及时联系采美客服!")
+                        .pagePath("pages/seller/notice/service/Institutional_visits?spId="+1340+"&accDateTime="+"2023-09-14"));
+        sendMessage(wechatTemplateMessageMessageModel);
+//        //站内信
+//        MessageModel<InsideMessage> insideMessageMessageModel = new MessageModel<>();
+//        insideMessageMessageModel.code(MessageType.WEB_INSIDE_MESSAGE)
+//                .mqInfo(new MqInfo().topic("MessageLine").delay(3).async(0))
+//                .info(new InsideMessage()
+//                        .userType(3)
+//                        .messageType(3)
+//                        .shopTieredType(7)
+//                        .name("机构名称")
+//                        .content("pageLabel")
+//                        .couponFee(new Double(5))
+//                        .thisId(1381)
+//                );
+//        sendMessage(insideMessageMessageModel);
+
+    }
+
+}

+ 58 - 0
src/main/java/com/caimei/modules/utils/RequestUtil.java

@@ -175,6 +175,64 @@ public class RequestUtil {
         return result.toString();
     }
 
+    public static String sendPost(String url, String param, String contentType) {
+        OutputStreamWriter out = null;
+        BufferedReader in = null;
+        String result = "";
+        try {
+            URL realUrl = new URL(url);
+            // 打开和URL之间的连接
+            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
+            // 设置通用的请求属性
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Content-Type", contentType);
+            // 发送POST请求必须设置如下两行
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            /*************************************************************************/
+            // 获取URLConnection对象对应的输出流
+            // out = new PrintWriter(conn.getOutputStream());
+            out = new OutputStreamWriter(conn.getOutputStream(), "utf-8"); // 8859_1
+            /*************************************************************************/
+
+            out.write(param); // post的关键所在
+            // 发送请求参数
+            // out.print(param);
+            // flush输出流的缓冲
+            out.flush();
+            // 定义BufferedReader输入流来读取URL的响应
+            int code = conn.getResponseCode();
+            if(code == 200) {
+                in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+            }else{
+                in = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
+            }
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+        } catch (Exception e) {
+            System.out.println("发送 POST 请求出现异常!" + e);
+            e.printStackTrace();
+        }
+        // 使用finally块来关闭输出流、输入流
+        finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+        return result;
+    }
     /**
      * 向指定 URL 发送请求
      * @param requestUrl 发送请求的 URL

+ 64 - 1
src/main/java/com/caimei/modules/utils/message/InsideMessage.java

@@ -12,7 +12,7 @@ import java.io.Serializable;
 @Data
 @Accessors(fluent = true)
 public class InsideMessage implements Serializable {
-
+    private static final long serialVersionUID = 1L;
     /**
      * 消息id
      */
@@ -116,6 +116,21 @@ public class InsideMessage implements Serializable {
      */
     private String shopName;
 
+    /** 手机号 */
+    private String mobile;
+
+    /** 名称 */
+    private String name;
+
+    /** 用户名称 */
+    private String userName;
+
+    /** 前用户名称 */
+    private String superUserName;
+
+    /** 当前id */
+    private Integer thisId;
+
     public Integer getId() {
         return id;
     }
@@ -172,6 +187,14 @@ public class InsideMessage implements Serializable {
         this.content = content;
     }
 
+    public String getReasonContent() {
+        return reasonContent;
+    }
+
+    public void setReasonContent(String reasonContent) {
+        this.reasonContent = reasonContent;
+    }
+
     public String getTime() {
         return time;
     }
@@ -307,4 +330,44 @@ public class InsideMessage implements Serializable {
     public void setShopName(String shopName) {
         this.shopName = shopName;
     }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getSuperUserName() {
+        return superUserName;
+    }
+
+    public void setSuperUserName(String superUserName) {
+        this.superUserName = superUserName;
+    }
+
+    public Integer getThisId() {
+        return thisId;
+    }
+
+    public void setThisId(Integer thisId) {
+        this.thisId = thisId;
+    }
 }

+ 1 - 1
src/main/java/com/caimei/modules/weisha/dao/CmMallOrganizeDao.java

@@ -55,7 +55,7 @@ public interface CmMallOrganizeDao extends CrudDao<CmMallOrganize> {
      * @param status
      * @param serviceProviderId
      */
-    void setUserServiceStatus(@Param("status") Integer status, @Param("serviceProviderId") Integer serviceProviderId, @Param("userId") Integer userId, @Param("validFlag") Integer validFlag, @Param("userPermission") Integer userPermission);
+    void setUserServiceStatus(@Param("status") Integer status, @Param("serviceProviderId") Integer serviceProviderId, @Param("userId") Integer userId, @Param("validFlag") Integer validFlag);
 
     /**
      * 采购人员下属机构

+ 2 - 2
src/main/java/com/caimei/modules/weisha/service/CmMallOrganizeService.java

@@ -83,9 +83,9 @@ public class CmMallOrganizeService extends CrudService<CmMallOrganizeDao, CmMall
         organizeDao.setStatus(status, id);
         // 用户协销状态
         if ("90".equals(status)) {
-            organizeDao.setUserServiceStatus(Integer.parseInt(status), Integer.parseInt(id), userId, 1, 4);
+            organizeDao.setUserServiceStatus(Integer.parseInt(status), Integer.parseInt(id), userId, 1);
         } else {
-            organizeDao.setUserServiceStatus(Integer.parseInt(status), Integer.parseInt(id), userId, 0, 1);
+            organizeDao.setUserServiceStatus(Integer.parseInt(status), Integer.parseInt(id), userId, 0);
         }
     }
 

+ 0 - 21
src/main/java/com/caimei/modules/weisha/web/CmOrganizeClubController.java

@@ -129,7 +129,6 @@ public class CmOrganizeClubController extends BaseController {
             //添加用户新增信息
             if (null == userID) {
                 //新增
-                cmUser.setClubStatus("90");
                 //设置为会所
                 cmUser.setRegisterUserTypeID("4");
                 cmUser.setUserIdentity(4);
@@ -149,7 +148,6 @@ public class CmOrganizeClubController extends BaseController {
                 cmUser.setAbleUserMoney(0d);
                 cmUser.setValidFlag("1");
                 cmUser.setAgreeFlag("1");
-                cmUser.setUserPermission(5);
                 //插入新的用户数据
                 cmUserService.insert(cmUser);
             }
@@ -163,11 +161,8 @@ public class CmOrganizeClubController extends BaseController {
                 newCmClub.setAddTime(currentDate);
                 newCmClub.setDefaultServiceProviderUpdTime(currentDate);
                 newCmClubService.insert(newCmClub);
-
                 //更新用户绑定关系
                 cmUser.setClubID(String.valueOf(newCmClub.getClubID()));
-                String nick = cmUser.getUserID() + "_" + RandomCodeGenerator.generateCodeString(4).toLowerCase();
-
                 //更新会所绑定关系
                 newCmClub.setUserID(cmUser.getUserID());
             }
@@ -179,20 +174,4 @@ public class CmOrganizeClubController extends BaseController {
         return "redirect:" + Global.getAdminPath() + "/weisha/user/organizeClubList?userOrganizeID=" + cmUserOrganize.getId();
     }
 
-    /**
-     * 机构上下线
-     */
-    @RequestMapping(value = "onlineAndOffline")
-    public String onlineAndOffline(CmUser cmUser) {
-        //更新用户表数据
-        cmUserService.update(cmUser);
-        NewCmClub newCmClub = new NewCmClub();
-        newCmClub.setClubID(Integer.parseInt(cmUser.getClubID()));
-        newCmClub.setUserID(cmUser.getUserID());
-        newCmClub.setStatus(Integer.valueOf(cmUser.getClubStatus()));
-        //更新会所表数据
-        newCmClubService.update(newCmClub);
-        return "redirect:" + Global.getAdminPath() + "/weisha/user/organizeClubList?userOrganizeID=" + cmUser.getUserOrganizeID();
-    }
-
 }

+ 2 - 1
src/main/resources/config/dev/caimei.properties

@@ -189,7 +189,8 @@ export.template=export
 
 # SPI-server\uFF08CKEditor5\u56FE\u7247\u4E0A\u4F20API\uFF0C\u641C\u7D22\u66F4\u65B0\u7D22\u5F15\uFF09
 caimei.spi=http://localhost:8008
-caimei.core=http://localhost:18002
+#caimei.core=http://localhost:18002
+caimei.core=https://core-b.caimei365.com
 caimei.manager=http://localhost:9527
 #\u963F\u91CC\u4E91oss\u5B58\u50A8
 aliyun.accessKeyId=LTAI4GBL3o4YkWnbKYgf2Xia

+ 0 - 1
src/main/resources/mappings/modules/order/ShopOrderMapper.xml

@@ -895,7 +895,6 @@
         LEFT JOIN club c ON c.userID = a.userID
         <where>
             (s.shopId = 1161 OR s.AccountOwnership = 0 OR a.splitCode = 'E1807059160' or a.ordertype = 2)
-            and a.shopStatus not in (4, 5)
             <if test="startTime != null and startTime != ''">
                 AND (a.orderTime &gt; #{startTime} OR a.orderTime = #{startTime})
             </if>

+ 49 - 2
src/main/resources/mappings/modules/user/CmSpMapper.xml

@@ -157,6 +157,53 @@
 		JOIN user u on a.userID = u.userID
 		where u.registerUserTypeID = 2
 	</select>
+
+    <select id="findSpUserLoginSum" resultType="java.util.HashMap" parameterType="string">
+		select
+		COUNT(  CASE WHEN a.time=1 THEN 1 END) AS loginSum,
+		((SELECT count(1) from club
+		WHERE  status=90
+		<if test="spID != null">
+			and  spID=#{spID}
+		</if>
+		)-COUNT(  CASE WHEN a.time=1 THEN 1 END)) AS not_loginSum
+		FROM (select a.*
+		FROM ((
+		select
+		c.clubId,1 AS time,c.spID
+		FROM club c
+		LEFT JOIN user u ON u.userID = c.userID
+		LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+		where c.status=90 and sp.status=90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
+		and u.loginTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+		GROUP BY c.clubId
+		)UNION(
+		select
+		c.clubId,1 AS time,c.spID
+		FROM club c
+		LEFT JOIN user u ON u.userID = c.userID
+		LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
+		LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+		where c.status=90 and sp.status=90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
+		and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+		GROUP BY c.clubId
+		)UNION(
+		select c.clubId,1 AS time,c.spID
+		FROM club c
+		LEFT JOIN user u ON u.userID = c.userID
+		LEFT JOIN cm_order cr ON cr.clubId = c.clubId
+		LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+		where c.status=90 and sp.status=90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
+		and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+		GROUP BY c.clubId
+		)
+		) a where  1=1
+		<if test="spID != null">
+			and  a.spID=#{spID}
+		</if>
+		GROUP BY a.clubId ) a
+
+	</select>
 	<select id="findSelectList" resultType="com.caimei.modules.user.entity.NewCmSp">
 		SELECT
 		<include refid="newCmSpColumns"/>
@@ -193,8 +240,8 @@
 	</update>
 
 	<insert id="choseManager">
-		insert into cm_serviceteam_manager (serviceProviderId,delflag)
-		values (#{serviceProviderID},0)
+		insert into cm_serviceteam_manager (serviceProviderId,delflag,validFlag)
+		values (#{serviceProviderID},0,1)
 	</insert>
 
 	<select id="findByUserId" resultType="com.caimei.modules.user.entity.NewCmSp">

+ 329 - 406
src/main/resources/mappings/modules/user/CmUserMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.caimei.modules.user.dao.CmUserDao">
 
     <sql id="cmUserColumns">
-		a.userID AS "userID",
+        a.userID AS "userID",
 		a.mobile AS "mobile",
 		a.userOrganizeID AS "userOrganizeID",
 		a.bindMobile AS "bindMobile",
@@ -25,24 +25,18 @@
 		a.registerTime AS "registerTime",
 		a.registerIP AS "registerIP",
 		a.loginTime AS "loginTime",
-		a.loginFailTime AS "loginFailTime",
 		a.loginIP AS "loginIP",
 		a.validFlag AS "validFlag",
-		a.clubStatus AS "clubStatus",
 		a.clubID AS "clubID",
 		a.agreeFlag AS "agreeFlag",
 		a.serviceProviderStatus AS "serviceProviderStatus",
 		a.serviceProviderID AS "serviceProviderID",
 		a.userMoney AS "userMoney",
 		a.ableUserMoney as "ableUserMoney",
-		a.logoffTime AS "logoffTime",
-		a.appKey AS "appKey",
-		a.appSecret AS "appSecret",
 		a.scanFlag AS "scanFlag",
 		a.userBeans AS "userBeans",
-		a.guideFlag AS "guideFlag",
-		a.userPermission AS "userPermission"
-	</sql>
+		a.guideFlag AS "guideFlag"
+    </sql>
 
     <select id="get" resultType="CmUser">
         SELECT
@@ -65,11 +59,11 @@
                 <if test="dbName == 'oracle'">'%'||#{mobile}||'%'</if>
                 <if test="dbName == 'mssql'">'%'+#{mobile}+'%'</if>
                 <if test="dbName == 'mysql'">concat('%',#{mobile},'%')</if>
-				OR a.bindMobile LIKE
-				<if test="dbName == 'oracle'">'%'||#{mobile}||'%'</if>
-				<if test="dbName == 'mssql'">'%'+#{mobile}+'%'</if>
-				<if test="dbName == 'mysql'">concat('%',#{mobile},'%')</if>
-				)
+                OR a.bindMobile LIKE
+                <if test="dbName == 'oracle'">'%'||#{mobile}||'%'</if>
+                <if test="dbName == 'mssql'">'%'+#{mobile}+'%'</if>
+                <if test="dbName == 'mysql'">concat('%',#{mobile},'%')</if>
+                )
             </if>
             <if test="email != null and email != ''">
                 AND a.email LIKE
@@ -83,15 +77,15 @@
                 <if test="dbName == 'mssql'">'%'+#{userName}+'%'</if>
                 <if test="dbName == 'mysql'">concat('%',#{userName},'%')</if>
             </if>
-			<if test="startTime != null and startTime != ''">
-				AND (a.registerTime &gt; #{startTime} OR  a.registerTime = #{startTime})
-			</if>
-			<if test="endTime != null and endTime != ''">
-				AND (a.registerTime &lt; #{endTime} OR  a.registerTime = #{endTime})
-			</if>
-			<if test="userOrganizeID != null and userOrganizeID != ''">
-				AND a.userOrganizeID = #{userOrganizeID}
-			</if>
+            <if test="startTime != null and startTime != ''">
+                AND (a.registerTime &gt; #{startTime} OR a.registerTime = #{startTime})
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND (a.registerTime &lt; #{endTime} OR a.registerTime = #{endTime})
+            </if>
+            <if test="userOrganizeID != null and userOrganizeID != ''">
+                AND a.userOrganizeID = #{userOrganizeID}
+            </if>
             <choose>
                 <when test="registerUserTypeID != null and registerUserTypeID != ''">
                     AND a.registerUserTypeID = #{registerUserTypeID}
@@ -111,56 +105,53 @@
         </choose>
     </select>
 
-	<!--适用于企业通过手机号码查询用户-->
-	<select id="findListBuyBindMobile" resultType="com.caimei.modules.user.entity.CmUser">
-		SELECT
-		*
-		FROM user a
-		<where>
-			a.bindMobile = #{bindMobile}
-			<if test="clubID != null and clubID != ''">
-				AND a.clubID != #{clubID}
-			</if>
-		</where>
-	</select>
+    <!--适用于企业通过手机号码查询用户-->
+    <select id="findListBuyBindMobile" resultType="com.caimei.modules.user.entity.CmUser">
+        SELECT
+        *
+        FROM user a
+        <where>
+            a.bindMobile = #{bindMobile}
+            <if test="clubID != null and clubID != ''">
+                AND a.clubID != #{clubID}
+            </if>
+        </where>
+    </select>
 
-	<!--星范商城查询会所-->
-	<select id="findListBuyUserInfo" resultType="com.caimei.modules.user.entity.CmUser">
-		SELECT
-		a.*
-		,c.linkMan AS "linkMan"
-		,t.name as "town"
-		,ci.name as "city"
-		,p.name as "province"
-		,c.address AS "address"
-		FROM user a
-		LEFT JOIN club c on c.userID = a.userID
-		LEFT JOIN town t on t.townID = c.townID
-		LEFT JOIN city ci ON ci.cityID = c.cityID
-		LEFT JOIN province p ON p.provinceID = c.provinceID
-		<where>
-			a.userOrganizeID = #{userOrganizeID}
-			<if test="bindMobile != null and bindMobile != ''">
-				AND a.bindMobile LIKE concat('%',#{bindMobile},'%')
-			</if>
-			<if test="name != null and name != ''">
-				AND a.name LIKE concat('%',#{name},'%')
-			</if>
-			<if test="linkMan != null and linkMan != ''">
-				AND c.linkMan LIKE concat('%',#{linkMan},'%')
-			</if>
-			<if test="startTime != null and startTime != ''">
-				AND a.registerTime <![CDATA[  >=  ]]> #{startTime}
-			</if>
-			<if test="endTime != null and endTime != ''">
-				AND a.registerTime <![CDATA[   <=  ]]> #{endTime}
-			</if>
-			<if test="clubStatus != null and clubStatus != ''">
-				AND a.clubStatus = #{clubStatus}
-			</if>
-		</where>
-		ORDER BY a.registerTime DESC
-	</select>
+    <!--星范商城查询会所-->
+    <select id="findListBuyUserInfo" resultType="com.caimei.modules.user.entity.CmUser">
+        SELECT
+        a.*
+        ,c.linkMan AS "linkMan"
+        ,t.name as "town"
+        ,ci.name as "city"
+        ,p.name as "province"
+        ,c.address AS "address"
+        FROM user a
+        LEFT JOIN club c on c.userID = a.userID
+        LEFT JOIN town t on t.townID = c.townID
+        LEFT JOIN city ci ON ci.cityID = c.cityID
+        LEFT JOIN province p ON p.provinceID = c.provinceID
+        <where>
+            a.userOrganizeID = #{userOrganizeID}
+            <if test="bindMobile != null and bindMobile != ''">
+                AND a.bindMobile LIKE concat('%',#{bindMobile},'%')
+            </if>
+            <if test="name != null and name != ''">
+                AND a.name LIKE concat('%',#{name},'%')
+            </if>
+            <if test="linkMan != null and linkMan != ''">
+                AND c.linkMan LIKE concat('%',#{linkMan},'%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND a.registerTime <![CDATA[  >=  ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND a.registerTime <![CDATA[   <=  ]]> #{endTime}
+            </if>
+        </where>
+        ORDER BY a.registerTime DESC
+    </select>
 
     <select id="findAllList" resultType="CmUser">
         SELECT
@@ -180,204 +171,172 @@
     </select>
 
     <insert id="insert" parameterType="CmUser" keyProperty="userID" useGeneratedKeys="true">
-		INSERT INTO user(
-			userOrganizeID,
-			account,
-		  	realName,
-		  	userIdentity,
-			mobile,
-			bindMobile,
-			userPermission,
-			email,
-			userName,
-			source,
-			image,
-			password,
-			name,
-			registerUserTypeID,
-			manufacturerStatus,
-			shopID,
-			auditStatus,
-			auditTime,
-			auditNote,
-			registerTime,
-			registerIP,
-			loginTime,
-			loginFailTime,
-			loginIP,
-			validFlag,
-			clubStatus,
-			<if test="clubID != null and clubID != ''">
-			clubID,
-			</if>
-			agreeFlag,
-			serviceProviderStatus,
-			serviceProviderID,
-			userMoney,
-			ableUserMoney,
-			logoffTime,
-			appKey,
-			appSecret,
-			scanFlag,
-			userBeans
-		) VALUES (
-			#{userOrganizeID},
-			#{account},
-		  	#{realName},
-		  	#{userIdentity},
-			#{mobile},
-			#{bindMobile},
-			#{userPermission},
-			#{email},
-			#{userName},
-			#{source},
-			#{image},
-			#{password},
-			#{name},
-			#{registerUserTypeID},
-			#{manufacturerStatus},
-			#{shopID},
-			#{auditStatus},
-			#{auditTime},
-			#{auditNote},
-			#{registerTime},
-			#{registerIP},
-			#{loginTime},
-			#{loginFailTime},
-			#{loginIP},
-			#{validFlag},
-			#{clubStatus},
-			<if test="clubID != null and clubID != ''">
-			#{clubID},
-			</if>
-			#{agreeFlag},
-			#{serviceProviderStatus},
-			#{serviceProviderID},
-			#{userMoney},
-			#{ableUserMoney},
-			#{logoffTime},
-			#{appKey},
-			#{appSecret},
-			#{scanFlag},
-			#{userBeans}
-		)
-	</insert>
+        INSERT INTO user(
+        userOrganizeID,
+        account,
+        realName,
+        userIdentity,
+        mobile,
+        bindMobile,
+        email,
+        userName,
+        source,
+        image,
+        password,
+        name,
+        registerUserTypeID,
+        manufacturerStatus,
+        shopID,
+        auditStatus,
+        auditTime,
+        auditNote,
+        registerTime,
+        registerIP,
+        loginTime,
+        loginIP,
+        validFlag,
+        <if test="clubID != null and clubID != ''">
+            clubID,
+        </if>
+        agreeFlag,
+        serviceProviderStatus,
+        serviceProviderID,
+        userMoney,
+        ableUserMoney,
+        scanFlag,
+        userBeans
+        ) VALUES (
+        #{userOrganizeID},
+        #{account},
+        #{realName},
+        #{userIdentity},
+        #{mobile},
+        #{bindMobile},
+        #{email},
+        #{userName},
+        #{source},
+        #{image},
+        #{password},
+        #{name},
+        #{registerUserTypeID},
+        #{manufacturerStatus},
+        #{shopID},
+        #{auditStatus},
+        #{auditTime},
+        #{auditNote},
+        #{registerTime},
+        #{registerIP},
+        #{loginTime},
+        #{loginIP},
+        #{validFlag},
+        <if test="clubID != null and clubID != ''">
+            #{clubID},
+        </if>
+        #{agreeFlag},
+        #{serviceProviderStatus},
+        #{serviceProviderID},
+        #{userMoney},
+        #{ableUserMoney},
+        #{scanFlag},
+        #{userBeans}
+        )
+    </insert>
 
     <update id="update">
-		UPDATE user SET
-		<if test="account != null and account != ''">
-			account = #{account},
-		</if>
-		<if test="bindMobile != null and bindMobile != ''">
-			bindMobile = #{bindMobile},
-		  	</if>
-		<if test="realName != null">
-			realName = #{realName},
-		  	</if>
-		<if test="userIdentity != null and userIdentity != ''">
-			userIdentity = #{userIdentity},
-		  	</if>
-		<if test="mobile != null and mobile != ''">
-			mobile = #{mobile},
-			</if>
-		<if test="userPermission != null and userPermission != ''">
-			userPermission = #{userPermission},
-			</if>
-		<if test="email != null and email != ''">
-			email = #{email},
-			</if>
-		<if test="userName != null and userName != ''">
-			userName = #{userName},
-			</if>
-		<if test="image != null and image != ''">
-			image = #{image},
-			</if>
-		<if test="password != null and password != ''">
-			password = #{password},
-			</if>
-		<if test="name != null and name != ''">
-			name = #{name},
-			</if>
-		<if test="registerUserTypeID != null and registerUserTypeID != ''">
-			registerUserTypeID = #{registerUserTypeID},
-			</if>
-		<if test="manufacturerStatus != null and manufacturerStatus != ''">
-			manufacturerStatus = #{manufacturerStatus},
-			</if>
-		<if test="shopID != null and shopID != ''">
-			shopID = #{shopID},
-			</if>
-		<if test="auditStatus != null and auditStatus != ''">
-			auditStatus = #{auditStatus},
-			</if>
-		<if test="auditTime != null">
-			auditTime = #{auditTime},
-			</if>
-		<if test="auditNote != null and auditNote != ''">
-			auditNote = #{auditNote},
-			</if>
-		<if test="registerTime != null ">
-			registerTime = #{registerTime},
-			</if>
-		<if test="registerIP != null and registerIP != ''">
-			registerIP = #{registerIP},
-			</if>
-		<if test="loginTime != null and loginTime != ''">
-			loginTime = #{loginTime},
-			</if>
-		<if test="loginFailTime != null and loginFailTime != ''">
-			loginFailTime = #{loginFailTime},
-			</if>
-		<if test="loginIP != null and loginIP != ''">
-			loginIP = #{loginIP},
-			</if>
-		<if test="validFlag != null and validFlag != ''">
-			validFlag = #{validFlag},
-			</if>
-		<if test="clubStatus != null and clubStatus != ''">
-			clubStatus = #{clubStatus},
-			</if>
-		<if test="clubID != null and clubID != ''">
-			clubID = #{clubID},
-			</if>
-		<if test="agreeFlag != null and agreeFlag != ''">
-			agreeFlag = #{agreeFlag},
-			</if>
-		<if test="serviceProviderStatus != null and serviceProviderStatus != ''">
-			serviceProviderStatus = #{serviceProviderStatus},
-			</if>
-		<if test="serviceProviderID != null and serviceProviderID != ''">
-			serviceProviderID = #{serviceProviderID},
-			</if>
-		<if test="userMoney != null and userMoney != ''">
-			userMoney = #{userMoney},
-			</if>
-		<if test="logoffTime != null and logoffTime != ''">
-			logoffTime = #{logoffTime},
-			</if>
-		<if test="appKey != null and appKey != ''">
-			appKey = #{appKey},
-			</if>
-		<if test="appSecret != null and appSecret != ''">
-			appSecret = #{appSecret},
-			</if>
-		<if test="scanFlag != null and scanFlag != ''">
-			scanFlag = #{scanFlag},
-			</if>
-		<if test="userBeans != null and userBeans != ''">
-			userBeans = #{userBeans},
-			</if>
-		<if test="guideFlag != null and guideFlag != ''">
-			guideFlag = #{guideFlag},
-		</if>
-		userID = #{userID}
-		WHERE userID = #{userID}
-	</update>
+        UPDATE user SET
+        <if test="account != null and account != ''">
+            account = #{account},
+        </if>
+        <if test="bindMobile != null and bindMobile != ''">
+            bindMobile = #{bindMobile},
+        </if>
+        <if test="realName != null">
+            realName = #{realName},
+        </if>
+        <if test="userIdentity != null and userIdentity != ''">
+            userIdentity = #{userIdentity},
+        </if>
+        <if test="mobile != null and mobile != ''">
+            mobile = #{mobile},
+        </if>
+        <if test="email != null and email != ''">
+            email = #{email},
+        </if>
+        <if test="userName != null and userName != ''">
+            userName = #{userName},
+        </if>
+        <if test="image != null and image != ''">
+            image = #{image},
+        </if>
+        <if test="password != null and password != ''">
+            password = #{password},
+        </if>
+        <if test="name != null and name != ''">
+            name = #{name},
+        </if>
+        <if test="registerUserTypeID != null and registerUserTypeID != ''">
+            registerUserTypeID = #{registerUserTypeID},
+        </if>
+        <if test="manufacturerStatus != null and manufacturerStatus != ''">
+            manufacturerStatus = #{manufacturerStatus},
+        </if>
+        <if test="shopID != null and shopID != ''">
+            shopID = #{shopID},
+        </if>
+        <if test="auditStatus != null and auditStatus != ''">
+            auditStatus = #{auditStatus},
+        </if>
+        <if test="auditTime != null">
+            auditTime = #{auditTime},
+        </if>
+        <if test="auditNote != null and auditNote != ''">
+            auditNote = #{auditNote},
+        </if>
+        <if test="registerTime != null ">
+            registerTime = #{registerTime},
+        </if>
+        <if test="registerIP != null and registerIP != ''">
+            registerIP = #{registerIP},
+        </if>
+        <if test="loginTime != null and loginTime != ''">
+            loginTime = #{loginTime},
+        </if>
+        <if test="loginIP != null and loginIP != ''">
+            loginIP = #{loginIP},
+        </if>
+        <if test="validFlag != null and validFlag != ''">
+            validFlag = #{validFlag},
+        </if>
+        <if test="clubID != null and clubID != ''">
+            clubID = #{clubID},
+        </if>
+        <if test="agreeFlag != null and agreeFlag != ''">
+            agreeFlag = #{agreeFlag},
+        </if>
+        <if test="serviceProviderStatus != null and serviceProviderStatus != ''">
+            serviceProviderStatus = #{serviceProviderStatus},
+        </if>
+        <if test="serviceProviderID != null and serviceProviderID != ''">
+            serviceProviderID = #{serviceProviderID},
+        </if>
+        <if test="userMoney != null and userMoney != ''">
+            userMoney = #{userMoney},
+        </if>
+        <if test="userBeans != null and userBeans != ''">
+            userBeans = #{userBeans},
+        </if>
+        <if test="guideFlag != null and guideFlag != ''">
+            guideFlag = #{guideFlag},
+        </if>
+        userID = #{userID}
+        WHERE userID = #{userID}
+    </update>
 
     <delete id="delete">
-		DELETE FROM user
-		WHERE userID = #{userID}
-	</delete>
+        DELETE
+        FROM user
+        WHERE userID = #{userID}
+    </delete>
 
     <select id="findUserByRegisterType" resultType="CmUser">
         SELECT
@@ -408,66 +367,47 @@
         auditTime DESC
     </select>
 
-    <update id="updateEmployeeStatus">
-        UPDATE user
-        <set>
-			<if test="userPermission != null and userPermission != ''">
-				userPermission = #{userPermission},
-			</if>
-            <if test="clubStatus != null and clubStatus != ''">
-                clubStatus = #{clubStatus},
-            </if>
-            <if test="manufacturerStatus != null and manufacturerStatus != ''">
-                manufacturerStatus = #{manufacturerStatus},
-            </if>
-			<if test="tipStatus != null and tipStatus != ''">
-				tipStatus = #{tipStatus},
-			</if>
-        </set>
-        WHERE userID = #{companyUserID}
-    </update>
-
     <update id="updateUserStatus">
         UPDATE user
         <set>
             <if test="manufacturerStatus != null and manufacturerStatus != ''">
                 manufacturerStatus = #{manufacturerStatus},
             </if>
-			<if test="validFlag != null and validFlag != ''">
-				validFlag = #{validFlag},
-			</if>
+            <if test="validFlag != null and validFlag != ''">
+                validFlag = #{validFlag},
+            </if>
         </set>
         WHERE userID = #{userID}
     </update>
 
     <update id="updateShopStatus">
-		UPDATE shop
+        UPDATE shop
         <set>
             <if test="status != null and status != ''">
                 status = #{status},
             </if>
         </set>
         WHERE userID = #{userID}
-	</update>
+    </update>
 
     <update id="updateUserAudit">
         UPDATE user
         <set>
-			<if test="auditStatus != null and auditStatus != ''">
-				auditStatus = #{auditStatus},
-			</if>
+            <if test="auditStatus != null and auditStatus != ''">
+                auditStatus = #{auditStatus},
+            </if>
             <if test="auditNote != null and auditNote != ''">
                 auditNote = #{auditNote},
             </if>
             <if test="manufacturerStatus != null and manufacturerStatus != ''">
                 manufacturerStatus = #{manufacturerStatus},
             </if>
-			<if test="auditTime != null and auditTime != ''">
-				auditTime = #{auditTime},
-			</if>
-			<if test="validFlag != null and validFlag != ''">
-				validFlag = #{validFlag},
-			</if>
+            <if test="auditTime != null and auditTime != ''">
+                auditTime = #{auditTime},
+            </if>
+            <if test="validFlag != null and validFlag != ''">
+                validFlag = #{validFlag},
+            </if>
         </set>
         WHERE userID = #{userId}
     </update>
@@ -475,133 +415,116 @@
     <update id="updateShopAudit">
         UPDATE shop
         <set>
-			<if test="auditStatus != null and auditStatus != ''">
-				auditStatus = #{auditStatus},
-			</if>
+            <if test="auditStatus != null and auditStatus != ''">
+                auditStatus = #{auditStatus},
+            </if>
             <if test="auditNote != null and auditNote != ''">
                 auditNote = #{auditNote},
             </if>
             <if test="manufacturerStatus != null and manufacturerStatus != ''">
                 status = #{manufacturerStatus},
             </if>
-			<if test="auditTime != null and auditTime != ''">
-				auditTime = #{auditTime},
-			</if>
+            <if test="auditTime != null and auditTime != ''">
+                auditTime = #{auditTime},
+            </if>
             <if test="name != null and name != ''">
-				checkMan = #{name},
-			</if>
+                checkMan = #{name},
+            </if>
         </set>
         WHERE shopID = #{shopId}
     </update>
 
+    <update id="updateUserInfo">
+        UPDATE user
+        SET realName   = #{realName},
+            name       = #{name},
+            userName   = #{userName},
+            bindMobile = #{bindMobile},
+            email      = #{email}
+        WHERE userID = #{userID}
+    </update>
 
-	<update id="updateEmployeePermission">
-		UPDATE user SET userPermission = #{userPermission}
-		WHERE userID = #{companyUserID} AND auditStatus = '1'
-	</update>
-
-
-	<update id="updateUserInfo">
-		UPDATE user SET
-		realName = #{realName},
-		name = #{name},
-		userName = #{userName},
-		bindMobile = #{bindMobile},
-		email = #{email}
-		WHERE userID = #{userID}
-	</update>
-
-	<update id="updateAbleUserMoney">
-		UPDATE user SET
-		    ableUserMoney = #{ableUserMoney}
-		WHERE userID = #{userId}
-	</update>
+    <update id="updateAbleUserMoney">
+        UPDATE user
+        SET ableUserMoney = #{ableUserMoney}
+        WHERE userID = #{userId}
+    </update>
 
-	<update id="updateMoney">
-		UPDATE user SET
-			userMoney =  #{userMoney},
-		    ableUserMoney = #{ableUserMoney}
-		WHERE userID = #{userID}
-	</update>
+    <update id="updateMoney">
+        UPDATE user
+        SET userMoney     = #{userMoney},
+            ableUserMoney = #{ableUserMoney}
+        WHERE userID = #{userID}
+    </update>
 
-	<select id="findUserByMobile" resultType="com.caimei.modules.user.entity.CmUser">
-		SELECT
-		<include refid="cmUserColumns"/>
-		FROM user a
-		WHERE a.mobile=#{mobile}
-	</select>
+    <select id="findUserByMobile" resultType="com.caimei.modules.user.entity.CmUser">
+        SELECT
+        <include refid="cmUserColumns"/>
+        FROM user a
+        WHERE a.mobile=#{mobile}
+    </select>
 
-	<select id="getUserPayOrder" resultType="com.caimei.po.neworder.CmShopOrder">
+    <select id="getUserPayOrder" resultType="com.caimei.po.neworder.CmShopOrder">
         select *
         from cm_shop_order
-        where userID=#{userId}
+        where userID = #{userId}
     </select>
     <select id="selectByMobileOrEmail" resultType="com.caimei.modules.user.entity.CmUser">
-		select u.*,cu.mobile as operatorMobile from user u
-		left join cm_mall_operation_user cu on cu.userID = u.userID
-		where (u.bindMobile = #{mobileOrEmail} or u.email = #{mobileOrEmail})
-		AND u.userIdentity IN (1,2,3,4)
-		AND u.userOrganizeID = 0
-		<if test="source == 'www'">
-			AND u.registerUserTypeID IN (1,3,4)
-		</if>
-		<if test="source == 'crm'">
-			AND u.registerUserTypeID IN (1,2,3,32,4)
-		</if>
-		UNION
-		select u.*,cu.mobile as operatorMobile from user u
-		left join cm_mall_operation_user cu on cu.userID = u.userID
-		where cu.mobile = #{mobileOrEmail}
-		AND cu.delFlag != 1
-		AND u.userIdentity IN (1,2,3,4)
-		AND u.userOrganizeID = 0
-		<if test="source == 'www'">
-			AND u.registerUserTypeID IN (1,3,4)
-		</if>
-		<if test="source == 'crm'">
-			AND u.registerUserTypeID IN (1,2,3,32,4)
-		</if>
-	</select>
-
-	<update id="updateUserBeans">
-		UPDATE USER SET userBeans = #{userBeans} WHERE userID = #{userID}
-	</update>
+        select u.*,cu.mobile as operatorMobile from user u
+        left join cm_mall_operation_user cu on cu.userID = u.userID
+        where (u.bindMobile = #{mobileOrEmail} or u.email = #{mobileOrEmail})
+        AND u.userIdentity IN (1,2,3,4)
+        AND u.userOrganizeID = 0
+        <if test="source == 'www'">
+            AND u.registerUserTypeID IN (1,3,4)
+        </if>
+        <if test="source == 'crm'">
+            AND u.registerUserTypeID IN (1,2,3,32,4)
+        </if>
+        UNION
+        select u.*,cu.mobile as operatorMobile from user u
+        left join cm_mall_operation_user cu on cu.userID = u.userID
+        where cu.mobile = #{mobileOrEmail}
+        AND cu.delFlag != 1
+        AND u.userIdentity IN (1,2,3,4)
+        AND u.userOrganizeID = 0
+        <if test="source == 'www'">
+            AND u.registerUserTypeID IN (1,3,4)
+        </if>
+        <if test="source == 'crm'">
+            AND u.registerUserTypeID IN (1,2,3,32,4)
+        </if>
+    </select>
 
-	<select id="findUserByOrganizeId" resultType="com.caimei.modules.user.entity.CmUser">
-		SELECT
-		<include refid="cmUserColumns"/>
-		FROM user a
-		WHERE a.userOrganizeID=#{organizeId}
-		limit 1
-	</select>
+    <update id="updateUserBeans">
+        UPDATE USER
+        SET userBeans = #{userBeans}
+        WHERE userID = #{userID}
+    </update>
 
-	<update id="updateByClubStatus">
-		UPDATE user SET clubStatus = #{clubStatus} WHERE userID = #{confirmUserId}
-	</update>
+    <select id="findUserByOrganizeId" resultType="com.caimei.modules.user.entity.CmUser">
+        SELECT
+        <include refid="cmUserColumns"/>
+        FROM user a
+        WHERE a.userOrganizeID=#{organizeId}
+        limit 1
+    </select>
 
-	<select id="findByConfirmTime" resultType="date">
-		SELECT
-		  confirmTime
-		FROM
-		  club_confirm_record
-		WHERE
-		  userId = #{userId}
-		ORDER BY
-		  confirmTime DESC
-		LIMIT
-		  1
-  </select>
-	<select id="findUserBeans" resultType="java.lang.Integer">
-		select userBeans
-		from user
-		where userID = #{userId}
-	</select>
-	<select id="selOrgan" resultType="com.caimei.modules.user.entity.CmOrganValueSystem">
-		select * from cm_organ_value_system where userID = #{userId} and stage = 0 limit 1
-	</select>
-	<insert id="insertOrgan">
-		INSERT INTO cm_organ_value_system
-		(userID, stage, delType)
-		VALUES(#{userId},0,1)
-	</insert>
+    <select id="findUserBeans" resultType="java.lang.Integer">
+        select userBeans
+        from user
+        where userID = #{userId}
+    </select>
+    <select id="selOrgan" resultType="com.caimei.modules.user.entity.CmOrganValueSystem">
+        select *
+        from cm_organ_value_system
+        where userID = #{userId}
+          and stage = 0
+        limit 1
+    </select>
+    <insert id="insertOrgan">
+        INSERT INTO cm_organ_value_system
+            (userID, stage, delType)
+        VALUES (#{userId}, 0, 1)
+    </insert>
 </mapper>

+ 146 - 7
src/main/resources/mappings/modules/user/NewCmClubMapper.xml

@@ -98,7 +98,7 @@
     <select id="findList" resultType="NewCmClub">
         SELECT
         <include refid="newCmClubColumns"/>
-        <include refid="otherColumns"/>,u.userPermission,u.source, covs.activeState,covs.customerValue
+        <include refid="otherColumns"/>,u.userPermission,u.source, covs.activeState,covs.customerValue,u.loginTime
         FROM club a
         <include refid="newCmClubJoins"/>
         LEFT JOIN (SELECT userID, activeState, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1)
@@ -150,6 +150,56 @@
             <if test="endTime != null and endTime != ''">
                 AND (u.registerTime &lt; #{endTime} OR u.registerTime = #{endTime})
             </if>
+            <if test="startLoginTime != null and startLoginTime != ''">
+                AND (u.loginTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) OR a.clubId in (select a.clubId
+                FROM ((
+                select
+                c.clubId,ccr.addTime AS time,c.spID
+                FROM club c
+                LEFT JOIN user u ON u.userID = c.userID
+                LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
+                LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+                where c.status=90 and sp.status=90
+                and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+                GROUP BY c.clubId
+                )UNION(
+                select c.clubId,cr.orderTime AS time,c.spID
+                FROM club c
+                LEFT JOIN user u ON u.userID = c.userID
+                LEFT JOIN cm_order cr ON cr.clubId = c.clubId
+                LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+                where c.status=90 and sp.status=90
+                and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+                GROUP BY c.clubId
+                )) a where a.time is not null
+                and  a.spID=#{spID}
+                GROUP BY a.clubId ))
+            </if>
+            <if test="endLoginTime != null and endLoginTime != ''">
+                AND (u.loginTime <![CDATA[ < ]]> DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) or u.loginTime is null) and a.clubId not in (select a.clubId
+                FROM ((
+                select
+                c.clubId,ccr.addTime AS time,c.spID
+                FROM club c
+                LEFT JOIN user u ON u.userID = c.userID
+                LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
+                LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+                where c.status=90 and sp.status=90
+                and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+                GROUP BY c.clubId
+                )UNION(
+                select c.clubId,cr.orderTime AS time,c.spID
+                FROM club c
+                LEFT JOIN user u ON u.userID = c.userID
+                LEFT JOIN cm_order cr ON cr.clubId = c.clubId
+                LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+                where c.status=90 and sp.status=90
+                and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
+                GROUP BY c.clubId
+                )) a where a.time is not null
+                and  a.spID=#{spID}
+                GROUP BY a.clubId )
+            </if>
             <if test="userIdentity != null and userIdentity != '' and userIdentity != '8'.toString()">
                 AND u.userIdentity = #{userIdentity}
             </if>
@@ -207,6 +257,101 @@
         </choose>
     </select>
 
+
+    <select id="findProviderList" resultType="NewCmClub">
+        SELECT
+        <include refid="newCmClubColumns"/>
+        ,case sp.status when 91 then '采美默认协销经理(官方账号)' else sp.linkMan end AS "spName"
+        ,u.userPermission,u.source,u.loginTime,cpr.createTime AS providerTime,
+        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
+        from cm_provider_record cpr
+        LEFT JOIN serviceprovider sp ON sp.serviceProviderID =cpr.spID
+        LEFT JOIN club a ON cpr.clubId = a.clubId
+        LEFT JOIN user u ON u.userID = a.userID
+        LEFT JOIN cm_svip_user csu ON csu.userId = u.userID
+        <where>
+            (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4 and sp.status=90
+            <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="status != null and status != ''">
+                AND a.status = #{status}
+            </if>
+            <if test="bindMobile != null and bindMobile != ''">
+                AND u.bindMobile LIKE concat('%',#{bindMobile},'%')
+            </if>
+            <if test="email != null and email != ''">
+                AND u.email LIKE concat('%',#{email},'%')
+            </if>
+            <if test="linkMan != null and linkMan != ''">
+                AND a.linkMan LIKE concat('%',#{linkMan},'%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND (u.registerTime &gt; #{startTime} OR u.registerTime = #{startTime})
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND (u.registerTime &lt; #{endTime} OR u.registerTime = #{endTime})
+            </if>
+            <if test="startLoginTime != null and startLoginTime != ''">
+                AND (u.loginTime &gt; #{startLoginTime} OR u.loginTime = #{startLoginTime})
+            </if>
+            <if test="endLoginTime != null and endLoginTime != ''">
+                AND (u.loginTime &lt; #{endLoginTime} OR u.loginTime = #{endLoginTime})
+            </if>
+            <if test="providerTime != null and providerTime != ''">
+                AND cpr.id in (
+                (SELECT  max(cp.id)
+                from cm_provider_record cp
+                WHERE DATE(cp.createTime) = DATE(#{providerTime})
+                group by cp.clubId))
+            </if>
+            <if test="userIdentity != null and userIdentity != '' and userIdentity != '8'.toString()">
+                AND u.userIdentity = #{userIdentity}
+            </if>
+            <if test="userIdentity != null and userIdentity != '' and userIdentity == '8'.toString()">
+                AND csu.delFlag = '0' and now() <![CDATA[ < ]]> csu.endTime
+            </if>
+            <if test="newDeal != null">
+                AND a.newDeal =#{newDeal}
+            </if>
+            <if test="spID != null and spID != ''">
+                AND sp.serviceProviderID = #{spID}
+            </if>
+        </where>
+        group by cpr.clubId
+        <choose>
+            <when test="page !=null and page.orderBy != null and page.orderBy != ''">
+                ORDER BY ${page.orderBy}
+            </when>
+            <otherwise>
+                ORDER BY case when a.status = 91 then 0 else 1 end desc,  cpr.createTime DESC
+            </otherwise>
+        </choose>
+    </select>
+
     <insert id="insert" parameterType="NewCmClub" keyProperty="clubID" useGeneratedKeys="true">
         INSERT INTO club(userID,
                          name,
@@ -473,12 +618,6 @@
                 #{num}, #{pushStatus}, #{addTime}, 0)
     </insert>
 
-    <update id="updateByStatus">
-        UPDATE club
-        SET status = #{clubStatus}
-        WHERE userID = #{confirmUserId}
-    </update>
-
     <select id="findLowOrder" resultType="com.caimei.modules.user.entity.UserBeansHistory">
         select userId, type, beansType, orderId, num, addTime
         from user_beans_history

+ 0 - 1
src/main/resources/mappings/modules/weisha/CmMallOrganizeMapper.xml

@@ -198,7 +198,6 @@
     <select id="setUserServiceStatus">
         update user
         set serviceProviderStatus = #{status},
-            userPermission = #{userPermission},
             validFlag = #{validFlag}
         where userId = #{userId}
     </select>

+ 0 - 492
src/main/webapp/WEB-INF/views/modules/miniprogram/cmMiniProgramUserForm.jsp

@@ -1,492 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>小程序用户管理管理</title>
-	<meta name="decorator" content="default"/>
-	<script type="text/javascript">
-		$(document).ready(function() {
-			//$("#name").focus();
-			$("#inputForm").validate({
-				submitHandler: function(form){
-					loading('正在提交,请稍等...');
-					form.submit();
-				},
-				errorContainer: "#messageBox",
-				errorPlacement: function(error, element) {
-					$("#messageBox").text("输入有误,请先更正。");
-					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
-						error.appendTo(element.parent().parent());
-					} else {
-						error.insertAfter(element);
-					}
-				}
-			});
-		});
-	</script>
-</head>
-<body>
-	<ul class="nav nav-tabs">
-		<li><a href="${ctx}/miniprogram/cmMiniProgramUser/">小程序用户管理列表</a></li>
-		<li class="active"><a href="${ctx}/miniprogram/cmMiniProgramUser/form?id=${cmMiniProgramUser.id}">小程序用户管理<shiro:hasPermission name="miniprogram:cmMiniProgramUser:edit">${not empty cmMiniProgramUser.id?'编辑':'添加'}</shiro:hasPermission><shiro:lacksPermission name="miniprogram:cmMiniProgramUser:edit">查看</shiro:lacksPermission></a></li>
-	</ul><br/>
-	<form:form id="inputForm" modelAttribute="cmMiniProgramUser" action="${ctx}/miniprogram/cmMiniProgramUser/save" method="post" class="form-horizontal">
-		<form:hidden path="id"/>
-		<sys:message content="${message}"/>		
-		<div class="control-group">
-			<label class="control-label"><span class="help-inline"><font color="red">*</font> </span>userID:</label>
-			<div class="controls">
-				<form:input path="userID" htmlEscape="false" maxlength="11" class="input-xlarge required"/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">企业账号名:</label>
-			<div class="controls">
-				<form:input path="account" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">手机号码:</label>
-			<div class="controls">
-				<form:input path="mobile" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">邮箱:</label>
-			<div class="controls">
-				<form:input path="email" htmlEscape="false" maxlength="50" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户权限 0游客 1 普通用户 2 会所 3 供应商 4 协销:</label>
-			<div class="controls">
-				<form:input path="userPermission" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户名:</label>
-			<div class="controls">
-				<form:input path="userName" htmlEscape="false" maxlength="50" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">企业绑定手机号:</label>
-			<div class="controls">
-				<form:input path="bindMobile" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">头像:</label>
-			<div class="controls">
-				<form:input path="image" htmlEscape="false" maxlength="200" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">密码:</label>
-			<div class="controls">
-				<form:input path="password" htmlEscape="false" maxlength="50" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户会员等级,见表c_userlevel或枚举UserLevel:</label>
-			<div class="controls">
-				<form:input path="userLevelID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">组织名称:</label>
-			<div class="controls">
-				<form:input path="name" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">真实姓名:</label>
-			<div class="controls">
-				<form:input path="realName" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">昵称:</label>
-			<div class="controls">
-				<form:input path="nick" htmlEscape="false" maxlength="50" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">性别:</label>
-			<div class="controls">
-				<form:input path="sex" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户身份 0、个人 1、协销 2、会所 3、供应商:</label>
-			<div class="controls">
-				<form:input path="userIdentity" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户类型,见表c_usertype或枚举UserType:</label>
-			<div class="controls">
-				<form:input path="registerUserTypeID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">所属企业用户对应UserID:</label>
-			<div class="controls">
-				<form:input path="companyUserID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">微信openID:</label>
-			<div class="controls">
-				<form:input path="openID" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】是否是供应商,1是 空或0否:</label>
-			<div class="controls">
-				<form:input path="manufacturerFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">供应商状态,见表c_shopstatus或枚举ShopStatus:</label>
-			<div class="controls">
-				<form:input path="manufacturerStatus" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">企业账号由哪一个用户升级而来,对应一个userID:</label>
-			<div class="controls">
-				<form:input path="upgradeBy" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">供应商Id:</label>
-			<div class="controls">
-				<form:input path="shopID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】是否创客,1是 空或0否:</label>
-			<div class="controls">
-				<form:input path="serviceProviderFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】是否会所,1是 空或0否:</label>
-			<div class="controls">
-				<form:input path="clubFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】达人标志:</label>
-			<div class="controls">
-				<form:input path="masterFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】:</label>
-			<div class="controls">
-				<form:input path="normalFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">审核状态:</label>
-			<div class="controls">
-				<form:input path="auditStatus" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">审核时间:</label>
-			<div class="controls">
-				<form:input path="auditTime" htmlEscape="false" maxlength="19" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">审核备注:</label>
-			<div class="controls">
-				<form:input path="auditNote" htmlEscape="false" maxlength="100" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">注册时间:</label>
-			<div class="controls">
-				<form:input path="registerTime" htmlEscape="false" maxlength="19" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">注册ip:</label>
-			<div class="controls">
-				<form:input path="registerIP" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">登录时间:</label>
-			<div class="controls">
-				<form:input path="loginTime" htmlEscape="false" maxlength="19" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">登录ip:</label>
-			<div class="controls">
-				<form:input path="loginIP" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户状态,1正常,0冻结:</label>
-			<div class="controls">
-				<form:input path="validFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">emailCheckFlag:</label>
-			<div class="controls">
-				<form:input path="emailCheckFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">mobileCheckFlag:</label>
-			<div class="controls">
-				<form:input path="mobileCheckFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">会所状态,见表c_clubstatus或枚举ClubStatus:</label>
-			<div class="controls">
-				<form:input path="clubStatus" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">会所Id:</label>
-			<div class="controls">
-				<form:input path="clubID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">同意协议标志:</label>
-			<div class="controls">
-				<form:input path="agreeFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】:</label>
-			<div class="controls">
-				<form:input path="activationCode" htmlEscape="false" maxlength="50" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】:</label>
-			<div class="controls">
-				<form:input path="activationDate" htmlEscape="false" maxlength="10" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">创客状态:</label>
-			<div class="controls">
-				<form:input path="serviceProviderStatus" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">创客Id:</label>
-			<div class="controls">
-				<form:input path="serviceProviderID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】达人状态:</label>
-			<div class="controls">
-				<form:input path="masterStatus" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】达人ID:</label>
-			<div class="controls">
-				<form:input path="masterID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">账户余额:</label>
-			<div class="controls">
-				<form:input path="userMoney" htmlEscape="false" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">积分:</label>
-			<div class="controls">
-				<form:input path="point" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">开通ERP标志:</label>
-			<div class="controls">
-				<form:input path="shopERPFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">邀请人Id:</label>
-			<div class="controls">
-				<form:input path="fromUserID" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">邀请人名称:</label>
-			<div class="controls">
-				<form:input path="fromUserName" htmlEscape="false" maxlength="50" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">退出时间:</label>
-			<div class="controls">
-				<form:input path="logoffTime" htmlEscape="false" maxlength="19" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">appKey:</label>
-			<div class="controls">
-				<form:input path="appKey" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">appSecret:</label>
-			<div class="controls">
-				<form:input path="appSecret" htmlEscape="false" maxlength="25" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】:</label>
-			<div class="controls">
-				<form:input path="sampleFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">扫描标志(4 CRM拉上来的会所) 0待扫描 1 已扫描 2已上线:</label>
-			<div class="controls">
-				<form:input path="scanFlag" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】:</label>
-			<div class="controls">
-				<form:input path="sysroleid" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】:</label>
-			<div class="controls">
-				<form:input path="gender" htmlEscape="false" maxlength="2" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">年龄:</label>
-			<div class="controls">
-				<form:input path="age" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">salerbuyer:</label>
-			<div class="controls">
-				<form:input path="salerbuyer" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">position:</label>
-			<div class="controls">
-				<form:input path="position" htmlEscape="false" maxlength="128" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">skill:</label>
-			<div class="controls">
-				<form:input path="skill" htmlEscape="false" maxlength="128" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">workage:</label>
-			<div class="controls">
-				<form:input path="workage" htmlEscape="false" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">微信号:</label>
-			<div class="controls">
-				<form:input path="wechat" htmlEscape="false" maxlength="64" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">QQ号:</label>
-			<div class="controls">
-				<form:input path="qq" htmlEscape="false" maxlength="32" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">短信是否发送成功:</label>
-			<div class="controls">
-				<form:input path="smsFlag" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">采美豆数量:</label>
-			<div class="controls">
-				<form:input path="userBeans" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】平台商标志位0非平台商 1平台商:</label>
-			<div class="controls">
-				<form:input path="privateShopFlag" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">【已废弃】平台会所标志位0非平台会所 1平台会所:</label>
-			<div class="controls">
-				<form:input path="privateClubFlag" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">是否创客授权:</label>
-			<div class="controls">
-				<form:input path="isMeiDaoAuthorized" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">是否已经引导过(供应商首次登陆操作引导):</label>
-			<div class="controls">
-				<form:input path="guideFlag" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">loginFailTime:</label>
-			<div class="controls">
-				<form:input path="loginFailTime" htmlEscape="false" maxlength="11" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户登录时的提示状态:0 未提示 1 已提示:</label>
-			<div class="controls">
-				<form:input path="tipStatus" htmlEscape="false" maxlength="1" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">用户申请加入企业的时间:</label>
-			<div class="controls">
-				<form:input path="applyTime" htmlEscape="false" maxlength="19" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">小程序openId:</label>
-			<div class="controls">
-				<form:input path="miniProgramOpenId" htmlEscape="false" maxlength="50" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="control-group">
-			<label class="control-label">小程序用户Id eg: x0001目的是用来记录小程序的用户数量:</label>
-			<div class="controls">
-				<form:input path="miniProgramId" htmlEscape="false" maxlength="20" class="input-xlarge "/>
-			</div>
-		</div>
-		<div class="form-actions">
-			<shiro:hasPermission name="miniprogram:cmMiniProgramUser:edit"><input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>&nbsp;</shiro:hasPermission>
-			<input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
-		</div>
-	</form:form>
-</body>
-</html>

+ 3 - 1
src/main/webapp/WEB-INF/views/modules/serviceteam/cmServiceteamRoleForm.jsp

@@ -86,6 +86,8 @@
     </shiro:hasPermission>
     <li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
     <li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+    <li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+
     <li class="active"><a
             href="${ctx}/serviceteam/cmServiceteamRole/form?teamId=${cmServiceteamRole.teamId}">协销小组${not empty cmServiceteamRole.teamId?'编辑':'添加'}</a>
     </li>
@@ -166,4 +168,4 @@
     </div>
 </form:form>
 </body>
-</html>
+</html>

+ 4 - 2
src/main/webapp/WEB-INF/views/modules/serviceteam/cmServiceteamRoleList.jsp

@@ -10,7 +10,7 @@
 	</style>
 	<script type="text/javascript">
 		$(document).ready(function() {
-			
+
 		});
 		function page(n,s){
 			$("#pageNo").val(n);
@@ -26,6 +26,8 @@
 		<shiro:hasPermission name="user:newCmClub:edit"><li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li></shiro:hasPermission>
 		<li class="active"><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
 		<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+		<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+
 	</ul>
 	<form:form id="searchForm" modelAttribute="cmServiceteamRole" action="${ctx}/serviceteam/cmServiceteamRole/" method="post" class="breadcrumb form-search">
 		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
@@ -93,4 +95,4 @@
 	</table>
 	<div class="pagination">${page}</div>
 </body>
-</html>
+</html>

+ 1 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp

@@ -52,6 +52,7 @@
 <ul class="nav nav-tabs">
     <li class="active"><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
+    <li><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 1 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyStatisticsList.jsp

@@ -56,6 +56,7 @@
 <ul class="nav nav-tabs">
     <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li class="active"><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
+    <li><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 267 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmSpClubTrackList.jsp

@@ -0,0 +1,267 @@
+<%@ page import="java.util.Date" %><%--
+  Created by IntelliJ IDEA.
+  User: Administrator
+  Date: 2020/4/12
+  Time: 12:01
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+	<title>机构活跃分析管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		.table th {
+			text-align: center;
+		}
+
+		.table td {
+			text-align: center;
+		}
+
+		.livelyProportion {
+			background: #f5f5f5;
+			height: 150px;
+			display: flex;
+			list-style: none;
+
+		}
+
+		.livelyProportion > li {
+			flex: 1;
+			text-align: center;
+			margin: auto 0;
+			font-size: 20px;
+			font-weight: bold;
+		}
+
+
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function () {
+			let date = new Date().getTime()
+			let date0 = formatDate(date)
+			let date1 = formatDate(date - 24 * 60 * 60 * 1000)
+			let date2 = formatDate(date - 24 * 60 * 60 * 1000 * 2)
+			let date3 = formatDate(${newCmClub.providerTime.getTime()})
+			if (date0 == date3) {
+				$("#conlog").text("(今天)")
+			} else if (date1 == date3) {
+				$("#conlog").text("(昨天)")
+			} else if (date2 == date3) {
+				$("#conlog").text("(前天)")
+			}
+
+		})
+
+		function formatDate(date) {
+			//date为时间戳
+			var date = new Date(date);
+			var Y = date.getFullYear() + '-';
+			var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
+			var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
+			var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
+			return Y + M + D;
+		}
+
+		function checkProviderTime(type) {
+			var date = new Date($("#providerTime").val()).getTime()
+			if (formatDate(new Date()) != formatDate(date)||type == 1) {
+				if (type != 1) {
+					date = date + 24 * 60 * 60 * 1000
+				} else {
+					date = date - 24 * 60 * 60 * 1000
+				}
+
+				$("#providerTime").val(formatDate(date))
+				$("#searchForm").submit()
+			}else {
+				$.jBox.tip("当前已经是最新的记录了!", 'info');
+			}
+
+		}
+		/**
+		 * @param obj
+		 * jquery控制input只能输入数字
+		 */
+		function onlynum(obj) {
+			obj.value = obj.value.replace(/[^\d]/g, ""); //清除"数字"以外的字符
+		}
+		function page(n, s) {
+			$("#pageNo").val(n);
+			$("#pageSize").val(s);
+			$("#searchForm").submit();
+			return false;
+		}
+
+	</script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+	<li><a href="${ctx}/new/user/agency/list">机构基本资料列表</a></li>
+	<li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
+	<li class="active"><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
+	<li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
+	<li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
+</ul>
+
+<ul class="breadcrumb livelyProportion">
+	<li>
+		<div>
+			<img src="/static/images/left.png" style="width: 50px" border="none" onclick="checkProviderTime(1)">
+			<span><fmt:formatDate value="${Date(newCmClub.providerTime.getTime()- 24 * 60 * 60 * 1000)}"
+								  pattern="yyyy年M月dd日 "></fmt:formatDate></span>
+		</div>
+	</li>
+	<li>
+		<div style="font-size: 40px;">
+			<fmt:formatDate value="${newCmClub.providerTime}"
+							pattern="yyyy年M月dd日 "></fmt:formatDate>
+			<span style="font-size: 20px;color:#0bbbee;position: relative;bottom: 5px"  id="conlog"></span>
+		</div>
+	</li>
+	<li>
+		<div>
+			<span><fmt:formatDate value="${Date(newCmClub.providerTime.getTime()+ 24 * 60 * 60 * 1000)}"
+								  pattern="yyyy年M月dd日 "></fmt:formatDate></span>
+			<img src="/static/images/right.png" border="none" style="width: 50px" onclick="checkProviderTime(0)">
+		</div>
+	</li>
+</ul>
+<form:form id="searchForm" modelAttribute="newCmClub" action="${ctx}/new/user/agency/cmSpClubTrackList/" method="post"
+		   class="breadcrumb form-search">
+	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+	<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+	<input id="providerTime" name="providerTime" type="hidden" value="<fmt:formatDate value="${newCmClub.providerTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+	<div class="flex-wrap">
+		<div class="item">
+			<label>机构ID:</label>
+			<form:input path="clubID"  onkeyup="onlynum(this)"  htmlEscape="false"
+						maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<label>机构名称:</label>
+			<form:input path="name" htmlEscape="false" maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<label>联系人:</label>
+			<form:input path="linkMan" htmlEscape="false" maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<label>手机号:</label>
+			<form:input path="bindMobile" htmlEscape="false" maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<label>协销:</label>
+			<form:select path="spID" class="input-medium">
+				<form:option value="" label="全部"/>
+				<form:options items="${spNameList}" itemLabel="name" itemValue="serviceProviderID" htmlEscape="false"/>
+			</form:select>
+		</div>
+		<div class="item">
+			<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+		</div>
+	</div>
+</form:form>
+<sys:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+	<thead>
+	<tr>
+		<th>机构ID</th>
+		<th>机构名称</th>
+		<th>协销</th>
+		<th>分配时间</th>
+		<th>联系人</th>
+		<th>手机号</th>
+		<th>机构级别</th>
+		<th>状态</th>
+		<th>注册时间</th>
+		<th>上次登录时间</th>
+		<th>操作</th>
+	</tr>
+	</thead>
+	<tbody>
+	<c:forEach items="${page.list}" var="newCmClubList">
+		<tr>
+			<td>${newCmClubList.clubID}</td>
+			<td>
+				<a href="${ctx}/new/user/agency/clubPortrait?clubID=${newCmClubList.clubID}&clubName=${newCmClubList.name}&dateType=0&type=4">${newCmClubList.name}</a>
+			</td>
+			<td>
+					${newCmClubList.spName}
+			</td>
+			<td><fmt:formatDate value="${newCmClubList.providerTime}"
+								pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
+			<td>${newCmClubList.userName}</td>
+			<td>${newCmClubList.bindMobile}</td>
+
+			<td>
+				<c:if test="${newCmClubList.userIdentity eq 4}">
+					个人机构
+					<c:if test="${newCmClubList.svipUserFlag eq 1}">
+						<font color="red">(超级会员)</font>
+					</c:if>
+					<c:if test="${newCmClubList.svipUserFlag ne 1}">
+						<font color="black">(普通会员)</font>
+					</c:if>
+				</c:if>
+				<c:if test="${newCmClubList.userIdentity eq 2}">
+					资质机构
+					<c:if test="${newCmClubList.svipUserFlag eq 1}">
+						<font color="red">(超级会员)</font>
+					</c:if>
+					<c:if test="${empty newCmClubList.medicalPracticeLicenseImg and newCmClubList.svipUserFlag ne 1}">
+						<font color="red">(高级会员)</font>
+					</c:if>
+					<c:if test="${!empty newCmClubList.medicalPracticeLicenseImg and newCmClubList.svipUserFlag ne 1}">
+						<font color="red">(医美会员)</font>
+					</c:if>
+				</c:if>
+			</td>
+			<td>
+				<c:choose>
+					<c:when test="${newCmClubList.status eq 90}">
+						<font color="green">已上线</font>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 91}">
+						<font color="red">已下线</font>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 92}">
+						<a href="JavaScript:;" onclick="return alertx('不通过原因:${newCmClubList.auditNote}')"
+						   style="text-decoration:underline;"><font color="red">审核未通过</font></a>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 93}">
+						<font color="#BF826C">已确认</font>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 94}">
+						<font color="red">已冻结</font>
+					</c:when>
+					<c:otherwise>
+						${fns:getDictLabel(newCmClubList.status, 'club_status', newCmClubList.status)}
+					</c:otherwise>
+				</c:choose>
+			</td>
+			<td>
+				<fmt:formatDate value="${newCmClubList.registerTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
+			</td>
+			<td>
+				<fmt:formatDate value="${newCmClubList.loginTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
+			</td>
+			<td>
+				<a href="${ctx}/new/user/agency/regist?clubId=${newCmClubList.clubID}&clubName=${newCmClubList.name}">咨询记录</a>
+				<a href="${ctx}/new/user/agency/spLogs?clubID=${newCmClubList.clubID}">协销更换记录</a>
+			</td>
+		</tr>
+	</c:forEach>
+	</tbody>
+</table>
+<div class="pagination">${page}</div>
+<script>
+</script>
+</body>
+</html>
+

+ 2 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmSpForm.jsp

@@ -59,6 +59,8 @@
 		<li class="active"><a href="${ctx}/new/user/cmSp/cmSpForm?id=${cmSp.id}"><shiro:hasPermission name="user:newCmClub:edit">${not empty cmSp.id?'编辑':'添加'}</shiro:hasPermission><shiro:lacksPermission name="user:newCmClub:edit">查看</shiro:lacksPermission>协销人员</a></li>
 		<li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
 		<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+		<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+
 	</ul><br/>
 	<form id="inputForm" onsubmit="return false" action="##" method="post" class="form-horizontal">
 		<div class="control-group">

+ 2 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmSpList.jsp

@@ -34,6 +34,8 @@
 	<shiro:hasPermission name="user:newCmClub:edit"><li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li></shiro:hasPermission>
 	<li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
 	<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+	<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+
 </ul>
 <form:form id="searchForm" modelAttribute="newCmSp" action="${ctx}/new/user/cmSp/cmSpList/" method="post" class="breadcrumb form-search">
 	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>

+ 246 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmSpLivelyClubFrom.jsp

@@ -0,0 +1,246 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Administrator
+  Date: 2020/4/12
+  Time: 12:01
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+	<title>机构活跃分析管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		.table th {
+			text-align: center;
+		}
+
+		.table td {
+			text-align: center;
+		}
+
+		.livelyProportion {
+			background: #f5f5f5;
+			height: 150px;
+			display: flex;
+			list-style: none;
+
+		}
+
+		.livelyProportion > li {
+			flex: 1;
+			text-align: center;
+			margin: auto 0
+		}
+
+		.livelyBorder {
+			color: red;
+			border-bottom: red 5px solid;
+		}
+
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function () {
+			if (${newCmClub.startLoginTime ne ''}) {
+				$("#livelyBorder>li:eq(0)").attr("class", "livelyBorder")
+			} else {
+				$("#livelyBorder>li:eq(1)").attr("class", "livelyBorder")
+			}
+			$("#livelyBorder>li").click(function (item) {
+				var dateTime = new Date();
+				$("#livelyBorder>li").attr("class", "")
+				if ($(this).index() == 0) {
+					$("#startLoginTime").attr("value", formatDate(dateTime.setMonth(dateTime.getMonth() - 6)))
+					$("#endLoginTime").attr("value", "")
+					$(this).attr("class", "livelyBorder")
+				} else {
+					$("#startLoginTime").attr("value", "")
+					$("#endLoginTime").attr("value", formatDate(dateTime.setMonth(dateTime.getMonth() - 6)))
+					$(this).attr("class", "livelyBorder")
+				}
+				$("#searchForm").submit()
+			})
+		});
+
+		function formatDate(date) {
+			//date为时间戳
+			var date = new Date(date);
+			var Y = date.getFullYear() + '-';
+			var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
+			var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
+			var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
+			return Y + M + D + " " + h + m + s;
+		}
+
+		function page(n, s) {
+			$("#pageNo").val(n);
+			$("#pageSize").val(s);
+			$("#searchForm").submit();
+			return false;
+		}
+
+	</script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+	<li><a href="${ctx}/new/user/cmSp/cmSpList/">协销人员列表</a></li>
+	<shiro:hasPermission name="user:newCmClub:edit">
+		<li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li>
+	</shiro:hasPermission>
+	<li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
+	<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+	<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+	<li class="active"><a href="${ctx}/new/user/cmSp/cmSpLivelyClubFrom?spID=${spId}">查看详情</a></li>
+</ul>
+
+<ul class="breadcrumb livelyProportion">
+	<li>
+		<h4>活跃机构</h4>
+		<br>
+		<p>(6个月内有登录商城等行为)</p>
+		<h2>${livelyClub}</h2>
+	</li>
+	<li>
+		<h4>不活跃机构</h4>
+		<br>
+		<p>(6个月内未登录商城等行为)</p>
+		<h2>${nolivelyClub}</h2>
+	</li>
+	<li>
+		<h4>活跃机构占比</h4>
+		<br>
+		<h2>${livelyClubProportion}%</h2>
+	</li>
+	<li>
+		<h4>不活跃机构占比</h4>
+		<br>
+		<h2>${nolivelyClubProportion}%</h2>
+	</li>
+</ul>
+<form:form id="searchForm" modelAttribute="newCmClub" action="${ctx}/new/user/cmSp/cmSpLivelyClubFrom/" method="post"
+		   class="breadcrumb form-search">
+	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+	<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+	<div class="flex-wrap">
+		<form:hidden path="spID"/>
+		<form:hidden path="startLoginTime"/>
+		<form:hidden path="endLoginTime"/>
+		<div class="item">
+			<label>机构ID:</label>
+			<form:input path="clubID" onkeyup="this.value=value.replace(/[^\d]/g,'')" htmlEscape="false"
+						maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<label>机构名称:</label>
+			<form:input path="name" htmlEscape="false" maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<label>联系人:</label>
+			<form:input path="linkMan" htmlEscape="false" maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<label>手机号:</label>
+			<form:input path="bindMobile" htmlEscape="false" maxlength="50" class="input-medium"/>
+		</div>
+		<div class="item">
+			<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+		</div>
+	</div>
+
+</form:form>
+<sys:message content="${message}"/>
+<div>
+	<ul id="livelyBorder" class="livelyProportion" style="height: 40px;width: 200px;background: white">
+		<li>活跃机构</li>
+		<li>不活跃机构</li>
+	</ul>
+</div>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+	<thead>
+	<tr>
+		<th>机构ID</th>
+		<th>机构名称</th>
+		<th>联系人</th>
+		<th>手机号</th>
+		<th>机构级别</th>
+		<th>状态</th>
+		<th>注册时间</th>
+		<th>上次登录时间</th>
+	</tr>
+	</thead>
+	<tbody>
+	<c:forEach items="${page.list}" var="newCmClubList">
+		<tr>
+			<td>${newCmClubList.clubID}</td>
+			<td>
+				<a href="${ctx}/new/user/agency/clubPortrait?clubID=${newCmClubList.clubID}&clubName=${newCmClubList.name}&dateType=0&type=4">${newCmClubList.name}</a>
+			</td>
+			<td>${newCmClubList.userName}</td>
+			<td>${newCmClubList.bindMobile}</td>
+
+			<td>
+				<c:if test="${newCmClubList.userIdentity eq 4}">
+					个人机构
+					<c:if test="${newCmClubList.svipUserFlag eq 1}">
+						<font color="red">(超级会员)</font>
+					</c:if>
+					<c:if test="${newCmClubList.svipUserFlag ne 1}">
+						<font color="black">(普通会员)</font>
+					</c:if>
+				</c:if>
+				<c:if test="${newCmClubList.userIdentity eq 2}">
+					资质机构
+					<c:if test="${newCmClubList.svipUserFlag eq 1}">
+						<font color="red">(超级会员)</font>
+					</c:if>
+					<c:if test="${empty newCmClubList.medicalPracticeLicenseImg and newCmClubList.svipUserFlag ne 1}">
+						<font color="red">(高级会员)</font>
+					</c:if>
+					<c:if test="${!empty newCmClubList.medicalPracticeLicenseImg and newCmClubList.svipUserFlag ne 1}">
+						<font color="red">(医美会员)</font>
+					</c:if>
+				</c:if>
+			</td>
+			<td>
+				<c:choose>
+					<c:when test="${newCmClubList.status eq 90}">
+						<font color="green">已上线</font>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 91}">
+						<font color="red">已下线</font>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 92}">
+						<a href="JavaScript:;" onclick="return alertx('不通过原因:${newCmClubList.auditNote}')"
+						   style="text-decoration:underline;"><font color="red">审核未通过</font></a>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 93}">
+						<font color="#BF826C">已确认</font>
+					</c:when>
+					<c:when test="${newCmClubList.status eq 94}">
+						<font color="red">已冻结</font>
+					</c:when>
+					<c:otherwise>
+						${fns:getDictLabel(newCmClubList.status, 'club_status', newCmClubList.status)}
+					</c:otherwise>
+				</c:choose>
+			</td>
+			<td>
+				<fmt:formatDate value="${newCmClubList.registerTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
+			</td>
+			<td>
+				<fmt:formatDate value="${newCmClubList.loginTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
+			</td>
+		</tr>
+	</c:forEach>
+	</tbody>
+</table>
+<div class="pagination">${page}</div>
+<script>
+</script>
+</body>
+</html>
+

+ 139 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmSpLivelyClubList.jsp

@@ -0,0 +1,139 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Administrator
+  Date: 2020/4/12
+  Time: 12:01
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+	<title>机构活跃分析管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		.table th {
+			text-align: center;
+		}
+
+		.table td {
+			text-align: center;
+		}
+
+		.livelyProportion {
+			background: #f5f5f5;
+			height: 150px;
+			display: flex;
+			list-style: none;
+
+		}
+		.livelyProportion>li {
+			flex: 1;
+			text-align: center;
+			margin:  auto 0
+		}
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function () {
+
+		});
+
+		function page(n, s) {
+			$("#pageNo").val(n);
+			$("#pageSize").val(s);
+			$("#searchForm").submit();
+			return false;
+		}
+	</script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+	<li><a href="${ctx}/new/user/cmSp/cmSpList/">协销人员列表</a></li>
+	<shiro:hasPermission name="user:newCmClub:edit">
+		<li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li>
+	</shiro:hasPermission>
+	<li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
+	<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+	<li class="active"><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+</ul>
+
+<ul class="breadcrumb livelyProportion" >
+	<li>
+		<h4>活跃机构</h4>
+		<br>
+		<p>(6个月内有登录商城等行为)</p>
+		<h2>${livelyClub}</h2>
+	</li>
+	<li>
+		<h4>不活跃机构</h4>
+		<br>
+		<p>(6个月内未登录商城等行为)</p>
+		<h2>${nolivelyClub}</h2>
+	</li>
+	<li>
+		<h4>活跃机构占比</h4>
+		<br>
+		<h2>${livelyClubProportion}%</h2>
+	</li>
+	<li>
+		<h4>不活跃机构占比</h4>
+		<br>
+		<h2>${nolivelyClubProportion}%</h2>
+	</li>
+</ul>
+<form:form id="searchForm" modelAttribute="newCmSp" action="${ctx}/new/user/cmSp/cmSpLivelyClubList/" method="post"
+		   class="breadcrumb form-search">
+	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+	<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+	<div class="ul-form">
+			<%--		<label>协销ID:</label>--%>
+			<%--			<form:input path="serviceProviderID" htmlEscape="false" maxlength="20" class="input-medium"/>--%>
+		<label>协销姓名:</label>
+		<form:input path="linkMan" htmlEscape="false" maxlength="20" class="input-medium"/>
+		<label>手机号:</label>
+		<form:input path="contractMobile" htmlEscape="false" maxlength="20" class="input-medium"/>
+		&nbsp;&nbsp;<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+		<div class="clearfix"></div>
+	</div>
+</form:form>
+<sys:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+	<thead>
+	<tr>
+		<th>协销ID</th>
+		<th>协销姓名</th>
+		<th>手机号</th>
+		<th>创建时间</th>
+		<th>活跃机构</th>
+		<th>不活跃机构</th>
+		<th>活跃机构占比</th>
+		<th>不活跃机构占比</th>
+		<th>操作</th>
+	</tr>
+	</thead>
+	<tbody>
+	<c:forEach items="${page.list}" var="newCmSp">
+		<tr>
+			<td>${newCmSp.serviceProviderID}</td>
+			<td>${newCmSp.linkMan}</td>
+			<td>${newCmSp.contractMobile}</td>
+			<td>${newCmSp.addTime}</td>
+			<td>${newCmSp.livelyClub}</td>
+			<td>${newCmSp.nolivelyClub}</td>
+			<td>${newCmSp.livelyClubProportion}%</td>
+			<td>${newCmSp.nolivelyClubProportion}%</td>
+			<td>
+				<a href="${ctx}/new/user/cmSp/cmSpLivelyClubFrom?spID=${newCmSp.serviceProviderID}">查看详情</a>
+			</td>
+		</tr>
+	</c:forEach>
+	</tbody>
+</table>
+<div class="pagination">${page}</div>
+<script>
+
+</script>
+</body>
+</html>
+

+ 3 - 1
src/main/webapp/WEB-INF/views/modules/userNew/cmSpTeamList.jsp

@@ -28,6 +28,8 @@
     </shiro:hasPermission>
     <li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
     <li class="active"><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+    <li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+
 </ul>
 <br/>
 <form:form id="inputForm" modelAttribute="newCmSp" action="${ctx}/new/user/cmSp/leader/save" method="post"
@@ -58,4 +60,4 @@
 </form:form>
 </body>
 
-</html>
+</html>

BIN
src/main/webapp/static/images/left.png


BIN
src/main/webapp/static/images/right.png


+ 5 - 2
src/test/java/com/caimei/info/InfoTest.java

@@ -7,6 +7,7 @@ import com.caimei.modules.landing.mapper.CmBrandLandingMapper;
 import com.caimei.modules.order.entity.NewShopOrder;
 import com.caimei.modules.order.service.NewShopOrderService;
 import com.caimei.modules.product.dao.CmOrganizeProductInfoMapper;
+import com.caimei.modules.sys.utils.SMSUtils;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -41,8 +42,10 @@ public class InfoTest extends SpringTransactionalContextTests {
 
 	@Test
 	public void test(){
-		NewShopOrder cmShopOrderByShopOrderID = newShopOrderService.getCmShopOrderByShopOrderID("29352");
-		System.out.println(cmShopOrderByShopOrderID);
+//		SMSUtils.sendSms(4, "17708413951", "【采美365】系统已为你分配机构客户,请及时跟进。机构名称【" + "newCmClub.getName()" + "】,联系人【" + "newCmClub.getLinkMan()" + "】,手机号【" + "15600000000" + "】,上一任销售【" + "etName()" + "】。");
+
+//		NewShopOrder cmShopOrderByShopOrderID = newShopOrderService.getCmShopOrderByShopOrderID("29352");
+//		System.out.println(cmShopOrderByShopOrderID);
 
 //		CmBrandLanding cmBrandLanding = new CmBrandLanding();
 //		cmBrandLanding.setType("not=1,2");