Просмотр исходного кода

调整商城登录,调整fs_user参数

yfh 3 дней назад
Родитель
Сommit
07a70e4eff
16 измененных файлов с 776 добавлено и 703 удалено
  1. 9 8
      fs-common-api/src/main/java/com/fs/framework/config/MyBatisConfig.java
  2. 25 0
      fs-company/src/main/java/com/fs/company/controller/company/CompanyRechargeController.java
  3. 4 149
      fs-service/src/main/java/com/fs/company/domain/CompanyRecharge.java
  4. 1 0
      fs-service/src/main/java/com/fs/company/param/CompanyRechargeParam.java
  5. 21 27
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseTrafficLogServiceImpl.java
  6. 424 293
      fs-service/src/main/java/com/fs/hisStore/domain/FsUserScrm.java
  7. 3 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsUserScrmMapper.java
  8. 2 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsUserScrmService.java
  9. 3 3
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsIntegralOrderScrmServiceImpl.java
  10. 1 1
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  11. 6 6
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserIntegralLogsScrmServiceImpl.java
  12. 5 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserScrmServiceImpl.java
  13. 2 2
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserSignScrmServiceImpl.java
  14. 146 129
      fs-service/src/main/resources/mapper/hisStore/FsUserScrmMapper.xml
  15. 88 53
      fs-user-app/src/main/java/com/fs/app/controller/store/WxH5MpScrmController.java
  16. 36 31
      fs-user-app/src/main/java/com/fs/app/controller/store/WxUserScrmController.java

+ 9 - 8
fs-common-api/src/main/java/com/fs/framework/config/MyBatisConfig.java

@@ -1,5 +1,6 @@
 package com.fs.framework.config;
 
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import com.fs.common.utils.StringUtils;
 import org.apache.ibatis.io.VFS;
 import org.apache.ibatis.session.SqlSessionFactory;
@@ -27,7 +28,7 @@ import java.util.List;
 
 /**
  * Mybatis支持*匹配扫描包
- * 
+ *
 
  */
 @Configuration
@@ -115,19 +116,19 @@ public class MyBatisConfig
     }
 
     @Bean
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
+    public SqlSessionFactory sqlSessionFactorys(DataSource dataSource) throws Exception
     {
-        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
-        String mapperLocations = env.getProperty("mybatis.mapperLocations");
-        String configLocation = env.getProperty("mybatis.configLocation");
+        String typeAliasesPackage = env.getProperty("mybatis-plus.typeAliasesPackage");
+        String mapperLocations = env.getProperty("mybatis-plus.mapperLocations");
+        String configLocation = env.getProperty("mybatis-plus.configLocation");
         typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
         VFS.addImplClass(SpringBootVFS.class);
 
-        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
+        final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
         sessionFactory.setDataSource(dataSource);
         sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
-        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
+        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
         sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
         return sessionFactory.getObject();
     }
-}
+}

+ 25 - 0
fs-company/src/main/java/com/fs/company/controller/company/CompanyRechargeController.java

@@ -1,5 +1,6 @@
 package com.fs.company.controller.company;
 
+import cn.hutool.core.util.IdUtil;
 import com.fs.common.annotation.Log;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.controller.BaseController;
@@ -13,6 +14,7 @@ import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyRecharge;
 import com.fs.company.domain.CompanyRechargeOrder;
 import com.fs.company.dto.RechargeDTO;
+import com.fs.company.param.CompanyRechargeParam;
 import com.fs.company.service.ICompanyRechargeService;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.util.OrderUtils;
@@ -21,6 +23,7 @@ import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
@@ -135,6 +138,28 @@ public class CompanyRechargeController extends BaseController
             }
         }
     }
+    @PreAuthorize("@ss.hasPermi('company:companyRecharge:recharge')")
+    @Log(title = "添加充值记录", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/recharge")
+    @Transactional
+    @RepeatSubmit
+    public R recharge(@RequestBody CompanyRechargeParam param)
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        CompanyRecharge recharge=new CompanyRecharge();
+        String orderSn = IdUtil.getSnowflake(0, 0).nextIdStr();
+        recharge.setRechargeNo(orderSn);
+        recharge.setCompanyId(loginUser.getCompany().getCompanyId());
+        recharge.setMoney(param.getMoney());
+        recharge.setCreateUserId(loginUser.getUser().getUserId());
+        recharge.setIsAudit(0);
+        recharge.setStatus(1);
+        recharge.setRemark(param.getRemark());
+        recharge.setPayType(3);
+        recharge.setImgs(param.getImgs());
+        companyRechargeService.insertCompanyRecharge(recharge);
+        return R.ok("提交成功,等待审核");
 
+    }
 
 }

+ 4 - 149
fs-service/src/main/java/com/fs/company/domain/CompanyRecharge.java

@@ -5,15 +5,17 @@ import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
 import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 充值对象 company_recharge
- * 
+ *
  * @author fs
  * @date 2023-02-27
  */
+@Data
 public class CompanyRecharge extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -72,152 +74,5 @@ public class CompanyRecharge extends BaseEntity
     private Date auditTime;
 
     private String remark;
-
-    @Override
-    public String getRemark() {
-        return remark;
-    }
-
-    @Override
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
-
-    public void setRechargeId(Long rechargeId)
-    {
-        this.rechargeId = rechargeId;
-    }
-
-    public Long getRechargeId() 
-    {
-        return rechargeId;
-    }
-    public void setCompanyId(Long companyId) 
-    {
-        this.companyId = companyId;
-    }
-
-    public Long getCompanyId() 
-    {
-        return companyId;
-    }
-    public void setRechargeNo(String rechargeNo) 
-    {
-        this.rechargeNo = rechargeNo;
-    }
-
-    public String getRechargeNo() 
-    {
-        return rechargeNo;
-    }
-    public void setMoney(BigDecimal money) 
-    {
-        this.money = money;
-    }
-
-    public BigDecimal getMoney() 
-    {
-        return money;
-    }
-    public void setPayTime(Date payTime) 
-    {
-        this.payTime = payTime;
-    }
-
-    public Date getPayTime() 
-    {
-        return payTime;
-    }
-    public void setStatus(Integer status) 
-    {
-        this.status = status;
-    }
-
-    public Integer getStatus() 
-    {
-        return status;
-    }
-    public void setPayType(Integer payType) 
-    {
-        this.payType = payType;
-    }
-
-    public Integer getPayType() 
-    {
-        return payType;
-    }
-    public void setTradeNo(String tradeNo) 
-    {
-        this.tradeNo = tradeNo;
-    }
-
-    public String getTradeNo() 
-    {
-        return tradeNo;
-    }
-    public void setBalance(BigDecimal balance) 
-    {
-        this.balance = balance;
-    }
-
-    public BigDecimal getBalance() 
-    {
-        return balance;
-    }
-    public void setCreateUserId(Long createUserId) 
-    {
-        this.createUserId = createUserId;
-    }
-
-    public Long getCreateUserId() 
-    {
-        return createUserId;
-    }
-    public void setIsAudit(Integer isAudit) 
-    {
-        this.isAudit = isAudit;
-    }
-
-    public Integer getIsAudit() 
-    {
-        return isAudit;
-    }
-    public void setAuditUserId(Long auditUserId) 
-    {
-        this.auditUserId = auditUserId;
-    }
-
-    public Long getAuditUserId() 
-    {
-        return auditUserId;
-    }
-    public void setAuditTime(Date auditTime) 
-    {
-        this.auditTime = auditTime;
-    }
-
-    public Date getAuditTime() 
-    {
-        return auditTime;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-            .append("rechargeId", getRechargeId())
-            .append("companyId", getCompanyId())
-            .append("rechargeNo", getRechargeNo())
-            .append("money", getMoney())
-            .append("createTime", getCreateTime())
-            .append("payTime", getPayTime())
-            .append("status", getStatus())
-            .append("payType", getPayType())
-            .append("tradeNo", getTradeNo())
-            .append("balance", getBalance())
-            .append("createUserId", getCreateUserId())
-            .append("isAudit", getIsAudit())
-            .append("auditUserId", getAuditUserId())
-            .append("auditTime", getAuditTime())
-            .toString();
-    }
+    private String imgs;
 }

+ 1 - 0
fs-service/src/main/java/com/fs/company/param/CompanyRechargeParam.java

@@ -16,5 +16,6 @@ public class CompanyRechargeParam implements Serializable
     private BigDecimal money;
 
     private String remark;
+    private String imgs;
 
 }

+ 21 - 27
fs-service/src/main/java/com/fs/course/service/impl/FsCourseTrafficLogServiceImpl.java

@@ -225,26 +225,25 @@ public class FsCourseTrafficLogServiceImpl implements IFsCourseTrafficLogService
 
         double trafficGB = account / trafficPrice;
         long trafficKB = (long) (trafficGB * 1024 * 1024);
+        long trafficB = trafficKB * 1024;
 
-        System.out.println("充值金额:" + account + " 元,对应可用流量:" + trafficKB + " KB");
+        System.out.println("充值金额:" + account + " 元,对应可用流量:" + trafficKB + " KB (" + trafficB + " B)");
 
         long updatedTrafficKB = 0L;
-        int pageSize = 1000;  // 每次查询1000条
-        int pageNum = 0;      // 分页页码
-        int loopCount = 0;    // 查询次数
-        int maxLoop = 20;     // 最大循环次数
+        int pageSize = 1000;
+        int pageNum = 0;
+        int loopCount = 0;
+        int maxLoop = 20;
 
-        List<Long> idsToUpdate = new ArrayList<>();       // 用于更新状态为1的ID
-        Set<Long> processedIds = new HashSet<>();         // 用于去重
-        long remainingTrafficKB = trafficKB;              // 还需补充的流量
-        long totalInternetTrafficRemaining = 0L;          // 记录未处理的流量总和
+        List<Long> idsToUpdate = new ArrayList<>();
+        Set<Long> processedIds = new HashSet<>();
+        long remainingTrafficKB = trafficKB;
+        long totalInternetTrafficRemaining = 0L;
 
-        // 第一阶段:处理需要用于充值的记录
         while (updatedTrafficKB < trafficKB && loopCount < maxLoop) {
             loopCount++;
             int offset = pageNum * pageSize;
 
-            // 查询当前分页的数据
             List<TrafficRecord> trafficRecords =
                     fsCourseTrafficLogMapper.findUnusedRecordsWithTraffic(
                             internetTrafficParam.getCompanyId(), offset, pageSize);
@@ -252,15 +251,12 @@ public class FsCourseTrafficLogServiceImpl implements IFsCourseTrafficLogService
             if (trafficRecords.isEmpty()) {
                 break;
             }
-
-            // 处理当前批次的数据
             for (TrafficRecord record : trafficRecords) {
                 Long logId = record.getLogId();
 
                 if (processedIds.contains(logId)) {
                     continue;
                 }
-
                 if (updatedTrafficKB < trafficKB) {
                     updatedTrafficKB += record.getInternetTraffic();
                     idsToUpdate.add(logId);
@@ -281,12 +277,11 @@ public class FsCourseTrafficLogServiceImpl implements IFsCourseTrafficLogService
             pageNum++;
         }
 
-        // 第二阶段:将所有未处理的记录状态改为3
         List<Long> allUnprocessedIds = new ArrayList<>();
-        pageNum = 0;  // 重置分页
+        pageNum = 0;
         boolean hasMore = true;
 
-        while (hasMore && loopCount < maxLoop * 2) {  // 扩大循环次数限制
+        while (hasMore && loopCount < maxLoop * 2) {
             loopCount++;
             int offset = pageNum * pageSize;
 
@@ -301,26 +296,22 @@ public class FsCourseTrafficLogServiceImpl implements IFsCourseTrafficLogService
 
             for (TrafficRecord record : allRecords) {
                 Long logId = record.getLogId();
-                if (!idsToUpdate.contains(logId)) {  // 不是已处理的记录
+                if (!idsToUpdate.contains(logId)) {
                     allUnprocessedIds.add(logId);
                 }
             }
 
             pageNum++;
         }
-
-        // 更新数据库状态
         if (!idsToUpdate.isEmpty()) {
             fsCourseTrafficLogMapper.updateStatusByIds(idsToUpdate, 1);
             System.out.println("共更新状态为1的记录数:" + idsToUpdate.size());
         }
-
         if (!allUnprocessedIds.isEmpty()) {
             fsCourseTrafficLogMapper.updateStatusByIds(allUnprocessedIds, 3);
             System.out.println("共更新状态为3的记录数:" + allUnprocessedIds.size());
         }
 
-        // 剩余的计算和输出逻辑保持不变...
         Long count = fsCourseTrafficLogMapper.findRecordsNum(internetTrafficParam.getCompanyId());
         long overflowTrafficKB = Math.max(0, updatedTrafficKB - trafficKB) + count;
         if (overflowTrafficKB > 0) {
@@ -329,13 +320,16 @@ public class FsCourseTrafficLogServiceImpl implements IFsCourseTrafficLogService
 
         System.out.println("充值总流量:" + trafficKB + " KB");
         System.out.println("已使用流量:" + updatedTrafficKB + " KB");
-        long finalRemainingTrafficKB = Math.max(0, trafficKB - updatedTrafficKB);
-        System.out.println("最终剩余流量:" + finalRemainingTrafficKB + " KB");
 
-        // 系统配置更新逻辑保持不变...
+
+        // 系统配置更新逻辑 - 使用字节为单位
         SysConfig sysConfig = iSysConfigService.selectConfigByConfigKey("redPacket.Traffic.config");
-        String trafficCount = finalRemainingTrafficKB == 0 ?
-                "-" + overflowTrafficKB : String.valueOf(finalRemainingTrafficKB);
+
+        // 计算溢出流量(字节)
+        long overflowTrafficB = updatedTrafficKB * 1024;
+
+        Long sum = Long.parseLong(sysConfig.getConfigValue()) + overflowTrafficB;
+        String trafficCount = sum+"";
 
         if (ObjectUtils.isEmpty(sysConfig)) {
             sysConfig = new SysConfig();

+ 424 - 293
fs-service/src/main/java/com/fs/hisStore/domain/FsUserScrm.java

@@ -44,6 +44,7 @@ public class FsUserScrm extends BaseEntity
     /** 用户昵称 */
     @Excel(name = "会员昵称", sort = 1)
     private String nickname;
+    private String nickName;
 
     /** 用户备注 */
     @Excel(name = "用户备注", sort = 12)
@@ -51,7 +52,7 @@ public class FsUserScrm extends BaseEntity
 
 
     /** 手机号码 */
-    @Excel(name = "手机号码", sort = 3)
+    @Excel(name = "手机号码")
     private String phone;
 
     /** 最后一次登录ip */
@@ -64,14 +65,12 @@ public class FsUserScrm extends BaseEntity
     /** 佣金金额 */
     private BigDecimal brokeragePrice;
 
-    /** 用户剩余积分 */
-    @Excel(name = "积分", sort = 5)
-    private BigDecimal integral;
-
-    /** 连续签到天数 */
-    private Long signNum;
+    /** 用户积分 */
+    @Excel(name = "用户积分")
+    private Long integral;
 
     /** 1为正常,0为禁止 */
+    @Excel(name = "1为正常,0为禁止")
     private Integer status;
     private String statusText;
 
@@ -80,72 +79,122 @@ public class FsUserScrm extends BaseEntity
 
     /** 推广上级用户ID */
     private Long spreadUserId;
+    /** 推广上级用户ID */
+    @Excel(name = "推广上级用户ID")
+    private String tuiUserId;
+    private Date spreadTime;
 
     /** 推广员关联时间 */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date spreadTime;
-
-    /** 用户类型 */
+    @Excel(name = "推广员关联时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date tuiTime;
     private String userType;
-
-    /** 是否为推广员 */
     private Integer isPromoter;
-
-    /** 用户购买次数 */
     private Long payCount;
-
-    /** 下级人数 */
     private Long spreadCount;
-
-    /** 详细地址 */
     private String addres;
 
+    /** 下级人数 */
+    @Excel(name = "下级人数")
+    private Long tuiUserCount;
 
+    /** 微信小程序OPENID */
+    @Excel(name = "微信小程序OPENID")
     private String maOpenId;
 
+    /** 微信公众号OPENID */
+    @Excel(name = "微信公众号OPENID")
     private String mpOpenId;
 
+    /** 关联ID */
+    @Excel(name = "关联ID")
     private String unionId;
 
+    /** $column.columnComment */
+    @Excel(name = "关联ID")
     private Integer isDel;
 
-    private Integer isWeixinAuth;
+    /** 邀请码 */
+    @Excel(name = "邀请码")
+    private String userCode;
 
     private Long companyId;
-
     private Long companyUserId;
     private String companyUserName;
-
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "推线日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date registerDate;
+    @Excel(name = "推线编码")
     private String registerCode;
-    private String source;
 
-    private String userCode;
+    /** 余额 */
+    @Excel(name = "余额")
+    private BigDecimal balance;
+
+    /** 连续签到天数 */
+    @Excel(name = "连续签到天数")
+    private Long signNum;
 
+    private Integer integralStatus;
+
+    private Integer isBuy;
+
+    private String jpushId;
     private Integer isVip;
     private Date  vipStartDate;
     private Date  vipEndDate;
     private Integer vipLevel;
     private Integer vipStatus;
 
-    private String jpushId;
-
     private Integer sex;
-    private Integer isAddQw;
-    private Long qwExtId;
+    private String storeOpenId;
+
+    //是否关注公众号
+    private Integer isOfficialAccountAuth;
+    private Integer isPush; //是否消息通知
+
+    private Integer isIndividuationPush;//是否个性化推送
+
+    private Integer isWeixinAuth;
+
+    private String loginDevice;//当前登录设备
+
+    private String source;//app来源
+
+    private Integer isAddQw;//是否添加企微客服
     private Integer isShow;//是否展示购买以及订单状态
 
+    private Long parentId; //邀请人id
 
+    private String courseMaOpenId; //看课小程序openid
 
-    private String courseMaOpenId;//看课小程序openId
+    private Long qwExtId;
 
-    // 企微重粉
-    private Integer qwRepeat;
-    // 小程序(看课)重粉
-    private Integer userRepeat;
-    // 是否已购0 否 1程序内下单 2程序外下单
-    private Integer payOrder;
+    /**
+     * 企微销售ID
+     * **/
+    private Long qwUserId;
+
+    public void setNickName(String nickname)
+    {
+        if(StringUtils.isNotEmpty(nickname)){
+            this.nickName= EmojiParser.parseToHtmlDecimal(nickname);
+        }
+        else{
+            this.nickName= nickname;
+        }
+        this.nickname = this.nickName;
+    }
+
+    public String getNickName()
+    {
+        if(StringUtils.isNotEmpty(nickName)){
+            return EmojiParser.parseToUnicode(nickName);
+        }
+        else{
+            return nickName;
+        }
+    }
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(exist = false)
@@ -161,6 +210,8 @@ public class FsUserScrm extends BaseEntity
     @ApiModelProperty(value = "所属公司")
     @Excel(name = "所属公司", sort = 9)
     private String companyName;
+    private String rank;
+    private String react;
 
     /**
      * 项目ID
@@ -175,26 +226,29 @@ public class FsUserScrm extends BaseEntity
         this.projectId = projectId;
     }
 
-
+    // 是否已购0 否 1程序内下单 2程序外下单
+    private Integer payOrder;
 
     @ApiModelProperty(value = "是否点过注册链接 0:否 1:是")
     @Excel(name = "是否点过注册链接 0:否 1:是")
     private Integer isBecomeMember;
 
-    public Integer getQwRepeat() {
-        return qwRepeat;
+    public String getRank() {
+        return rank;
     }
 
-    public void setQwRepeat(Integer qwRepeat) {
-        this.qwRepeat = qwRepeat;
+    public FsUserScrm setRank(String rank) {
+        this.rank = rank;
+        return this;
     }
 
-    public Integer getUserRepeat() {
-        return userRepeat;
+    public String getReact() {
+        return react;
     }
 
-    public void setUserRepeat(Integer userRepeat) {
-        this.userRepeat = userRepeat;
+    public FsUserScrm setReact(String react) {
+        this.react = react;
+        return this;
     }
 
     public Integer getPayOrder() {
@@ -251,428 +305,505 @@ public class FsUserScrm extends BaseEntity
         this.isShow = isShow;
     }
 
-    public String getJpushId() {
-        return jpushId;
+    public String getPassword() {
+        return password;
     }
 
-    public void setJpushId(String jpushId) {
-        this.jpushId = jpushId;
+    public Long getBirthday() {
+        return birthday;
     }
 
-    public Integer getSex() {
-        return sex;
+    public FsUserScrm setBirthday(Long birthday) {
+        this.birthday = birthday;
+        return this;
     }
 
-    public void setSex(Integer sex) {
-        this.sex = sex;
+    public String getIdCard() {
+        return idCard;
     }
 
-    public Integer getIsVip() {
-        return isVip;
+    public FsUserScrm setIdCard(String idCard) {
+        this.idCard = idCard;
+        return this;
     }
 
-    public void setIsVip(Integer isVip) {
-        this.isVip = isVip;
+    @Override
+    public String getRemark() {
+        return remark;
     }
 
-    public Date getVipEndDate() {
-        return vipEndDate;
+    public String getTuiUserId() {
+        return tuiUserId;
     }
 
-    public void setVipEndDate(Date vipEndDate) {
-        this.vipEndDate = vipEndDate;
+    public FsUserScrm setTuiUserId(String tuiUserId) {
+        this.tuiUserId = tuiUserId;
+        return this;
     }
 
-    public Date getVipStartDate() {
-        return vipStartDate;
+    public Date getSpreadTime() {
+        return spreadTime;
     }
 
-    public void setVipStartDate(Date vipStartDate) {
-        this.vipStartDate = vipStartDate;
+    public FsUserScrm setSpreadTime(Date spreadTime) {
+        this.spreadTime = spreadTime;
+        return this;
     }
 
-    public Integer getVipLevel() {
-        return vipLevel;
+    public Date getTuiTime() {
+        return tuiTime;
     }
 
-    public void setVipLevel(Integer vipLevel) {
-        this.vipLevel = vipLevel;
+    public FsUserScrm setTuiTime(Date tuiTime) {
+        this.tuiTime = tuiTime;
+        return this;
     }
 
-    public Integer getVipStatus() {
-        return vipStatus;
+    public String getUserType() {
+        return userType;
     }
 
-    public void setVipStatus(Integer vipStatus) {
-        this.vipStatus = vipStatus;
+    public FsUserScrm setUserType(String userType) {
+        this.userType = userType;
+        return this;
     }
 
-    public String getUserCode() {
-        return userCode;
+    public Long getPayCount() {
+        return payCount;
     }
 
-    public void setUserCode(String userCode) {
-        this.userCode = userCode;
+    public FsUserScrm setPayCount(Long payCount) {
+        this.payCount = payCount;
+        return this;
     }
 
-    public String getMaOpenId() {
-        return maOpenId;
+    public Long getSpreadCount() {
+        return spreadCount;
     }
 
-    public void setMaOpenId(String maOpenId) {
-        this.maOpenId = maOpenId;
+    public FsUserScrm setSpreadCount(Long spreadCount) {
+        this.spreadCount = spreadCount;
+        return this;
     }
 
-    public String getMpOpenId() {
-        return mpOpenId;
+    public String getAddres() {
+        return addres;
     }
 
-    public void setMpOpenId(String mpOpenId) {
-        this.mpOpenId = mpOpenId;
+    public FsUserScrm setAddres(String addres) {
+        this.addres = addres;
+        return this;
     }
 
-    public String getUnionId() {
-        return unionId;
+    public Long getTuiUserCount() {
+        return tuiUserCount;
     }
 
-    public void setUnionId(String unionId) {
-        this.unionId = unionId;
+    public FsUserScrm setTuiUserCount(Long tuiUserCount) {
+        this.tuiUserCount = tuiUserCount;
+        return this;
     }
 
-    public Date getRegisterDate() {
-        return registerDate;
+    public Integer getIsDel() {
+        return isDel;
     }
 
-    public void setRegisterDate(Date registerDate) {
-        this.registerDate = registerDate;
+    public FsUserScrm setIsDel(Integer isDel) {
+        this.isDel = isDel;
+        return this;
     }
 
-    public String getRegisterCode() {
-        return registerCode;
+    public BigDecimal getBalance() {
+        return balance;
     }
 
-    public void setRegisterCode(String registerCode) {
-        this.registerCode = registerCode;
+    public FsUserScrm setBalance(BigDecimal balance) {
+        this.balance = balance;
+        return this;
     }
 
-    public String getSource() {
-        return source;
+    public Integer getIntegralStatus() {
+        return integralStatus;
     }
 
-    public void setSource(String source) {
-        this.source = source;
+    public FsUserScrm setIntegralStatus(Integer integralStatus) {
+        this.integralStatus = integralStatus;
+        return this;
     }
 
-    public Long getCompanyId() {
-        return companyId;
+    public Integer getIsBuy() {
+        return isBuy;
     }
 
-    public void setCompanyId(Long companyId) {
-        this.companyId = companyId;
+    public FsUserScrm setIsBuy(Integer isBuy) {
+        this.isBuy = isBuy;
+        return this;
     }
 
-    public Long getCompanyUserId() {
-        return companyUserId;
+    public String getStoreOpenId() {
+        return storeOpenId;
     }
 
-    public void setCompanyUserId(Long companyUserId) {
-        this.companyUserId = companyUserId;
+    public FsUserScrm setStoreOpenId(String storeOpenId) {
+        this.storeOpenId = storeOpenId;
+        return this;
     }
 
-    public Integer getIsWeixinAuth() {
-        return isWeixinAuth;
+    public Integer getIsOfficialAccountAuth() {
+        return isOfficialAccountAuth;
     }
 
-    public void setIsWeixinAuth(Integer isWeixinAuth) {
-        this.isWeixinAuth = isWeixinAuth;
+    public FsUserScrm setIsOfficialAccountAuth(Integer isOfficialAccountAuth) {
+        this.isOfficialAccountAuth = isOfficialAccountAuth;
+        return this;
     }
 
-    public void setUserId(Long userId)
-    {
-        this.userId = userId;
+    public Integer getIsPush() {
+        return isPush;
     }
 
-    public Long getUserId()
-    {
-        return userId;
+    public FsUserScrm setIsPush(Integer isPush) {
+        this.isPush = isPush;
+        return this;
     }
-    public void setUsername(String username)
-    {
-        this.username = username;
+
+    public Integer getIsIndividuationPush() {
+        return isIndividuationPush;
     }
 
-    public String getUsername()
-    {
+    public FsUserScrm setIsIndividuationPush(Integer isIndividuationPush) {
+        this.isIndividuationPush = isIndividuationPush;
+        return this;
+    }
+
+    public String getLoginDevice() {
+        return loginDevice;
+    }
+
+    public FsUserScrm setLoginDevice(String loginDevice) {
+        this.loginDevice = loginDevice;
+        return this;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public FsUserScrm setParentId(Long parentId) {
+        this.parentId = parentId;
+        return this;
+    }
+
+    public Long getQwUserId() {
+        return qwUserId;
+    }
+
+    public FsUserScrm setQwUserId(Long qwUserId) {
+        this.qwUserId = qwUserId;
+        return this;
+    }
+
+    public Date getStartCreateTime() {
+        return startCreateTime;
+    }
+
+    public FsUserScrm setStartCreateTime(Date startCreateTime) {
+        this.startCreateTime = startCreateTime;
+        return this;
+    }
+
+    public Date getEndCreateTime() {
+        return endCreateTime;
+    }
+
+    public FsUserScrm setEndCreateTime(Date endCreateTime) {
+        this.endCreateTime = endCreateTime;
+        return this;
+    }
+
+    public Integer getIsBecomeMember() {
+        return isBecomeMember;
+    }
+
+    public FsUserScrm setIsBecomeMember(Integer isBecomeMember) {
+        this.isBecomeMember = isBecomeMember;
+        return this;
+    }
+
+    public String getUsername() {
         return username;
     }
-    public void setPassword(String password)
-    {
+
+    public FsUserScrm setPassword(String password) {
         this.password = password;
+        return this;
     }
 
-    public String getPassword()
-    {
-        return password;
+    public String getJpushId() {
+        return jpushId;
     }
-    public void setRealName(String realName)
-    {
-        this.realName = realName;
+
+    public void setJpushId(String jpushId) {
+        this.jpushId = jpushId;
     }
 
-    public String getRealName()
-    {
-        return realName;
+    public Integer getSex() {
+        return sex;
     }
-    public void setBirthday(Long birthday)
-    {
-        this.birthday = birthday;
+
+    public void setSex(Integer sex) {
+        this.sex = sex;
     }
 
-    public Long getBirthday()
-    {
-        return birthday;
+    public Integer getIsVip() {
+        return isVip;
     }
-    public void setIdCard(String idCard)
-    {
-        this.idCard = idCard;
+
+    public void setIsVip(Integer isVip) {
+        this.isVip = isVip;
     }
 
-    public String getIdCard()
-    {
-        return idCard;
+    public Date getVipEndDate() {
+        return vipEndDate;
     }
 
-    @Override
-    public String getRemark() {
-        return remark;
+    public void setVipEndDate(Date vipEndDate) {
+        this.vipEndDate = vipEndDate;
     }
 
-    @Override
-    public void setRemark(String remark) {
-        this.remark = remark;
+    public BigDecimal getNowMoney() {
+        return nowMoney;
     }
 
-    public void setNickname(String nickname)
-    {
-        if(StringUtils.isNotEmpty(nickname)){
-            this.nickname= EmojiParser.parseToHtmlDecimal(nickname);
-        }
-        else{
-            this.nickname= nickname;
-        }
+    public String getRealName() {
+        return realName;
     }
 
-    public String getNickname()
-    {
-        if(StringUtils.isNotEmpty(nickname)){
-            return EmojiParser.parseToUnicode(nickname);
-        }
-        else{
-            return nickname;
-        }
+    public FsUserScrm setRealName(String realName) {
+        this.realName = realName;
+        return this;
     }
-    public void setAvatar(String avatar)
-    {
-        this.avatar = avatar;
+
+    public String getLastIp() {
+        return lastIp;
     }
 
-    public String getAvatar()
-    {
+    public FsUserScrm setLastIp(String lastIp) {
+        this.lastIp = lastIp;
+        return this;
+    }
+
+    public String getAvatar() {
         return avatar;
     }
-    public void setPhone(String phone)
-    {
-        this.phone = phone;
+
+    public FsUserScrm setAvatar(String avatar) {
+        this.avatar = avatar;
+        return this;
     }
 
-    public String getPhone()
-    {
+    public Long getSignNum() {
+        return signNum;
+    }
+
+    public FsUserScrm setSignNum(Long signNum) {
+        this.signNum = signNum;
+        return this;
+    }
+
+    public String getPhone() {
         return phone;
     }
-    public void setLastIp(String lastIp)
-    {
-        this.lastIp = lastIp;
+
+    public FsUserScrm setPhone(String phone) {
+        this.phone = phone;
+        return this;
     }
 
-    public String getLastIp()
-    {
-        return lastIp;
+    public Long getIntegral() {
+        return integral;
     }
-    public void setNowMoney(BigDecimal nowMoney)
-    {
+
+    public FsUserScrm setIntegral(Long integral) {
+        this.integral = integral;
+        return this;
+    }
+
+    public FsUserScrm setNowMoney(BigDecimal nowMoney) {
         this.nowMoney = nowMoney;
+        return this;
     }
 
-    public BigDecimal getNowMoney()
-    {
-        return nowMoney;
+    public Long getSpreadUserId() {
+        return spreadUserId;
     }
-    public void setBrokeragePrice(BigDecimal brokeragePrice)
-    {
-        this.brokeragePrice = brokeragePrice;
+
+    public FsUserScrm setSpreadUserId(Long spreadUserId) {
+        this.spreadUserId = spreadUserId;
+        return this;
     }
 
-    public BigDecimal getBrokeragePrice()
-    {
-        return brokeragePrice;
+    public Integer getIsPromoter() {
+        return isPromoter;
     }
-//    public void setIntegral(BigDecimal integral)
-//    {
-//        this.integral = integral;
-//    }
-//
-//    public BigDecimal getIntegral()
-//    {
-//        return integral;
-//    }
 
+    public FsUserScrm setIsPromoter(Integer isPromoter) {
+        this.isPromoter = isPromoter;
+        return this;
+    }
 
-    public BigDecimal getIntegral() {
-        return integral;
+    public Date getVipStartDate() {
+        return vipStartDate;
     }
 
-    public void setIntegral(BigDecimal integral) {
-        this.integral = integral;
+    public void setVipStartDate(Date vipStartDate) {
+        this.vipStartDate = vipStartDate;
     }
 
-    public void setSignNum(Long signNum)
-    {
-        this.signNum = signNum;
+    public Integer getVipLevel() {
+        return vipLevel;
     }
 
-    public Long getSignNum()
-    {
-        return signNum;
+    public void setVipLevel(Integer vipLevel) {
+        this.vipLevel = vipLevel;
     }
-    public void setStatus(Integer status)
-    {
-        this.status = status;
+
+    public Integer getVipStatus() {
+        return vipStatus;
     }
 
-    public Integer getStatus()
-    {
-        return status;
+    public void setVipStatus(Integer vipStatus) {
+        this.vipStatus = vipStatus;
     }
-    public void setLevel(Integer level)
-    {
-        this.level = level;
+
+    public String getUserCode() {
+        return userCode;
     }
 
-    public Integer getLevel()
-    {
-        return level;
+    public void setUserCode(String userCode) {
+        this.userCode = userCode;
     }
-    public void setSpreadUserId(Long spreadUserId)
-    {
-        this.spreadUserId = spreadUserId;
+
+    public String getMaOpenId() {
+        return maOpenId;
     }
 
-    public Long getSpreadUserId()
-    {
-        return spreadUserId;
+    public void setMaOpenId(String maOpenId) {
+        this.maOpenId = maOpenId;
     }
-    public void setSpreadTime(Date spreadTime)
-    {
-        this.spreadTime = spreadTime;
+
+    public String getMpOpenId() {
+        return mpOpenId;
     }
 
-    public Date getSpreadTime()
-    {
-        return spreadTime;
+    public void setMpOpenId(String mpOpenId) {
+        this.mpOpenId = mpOpenId;
     }
-    public void setUserType(String userType)
-    {
-        this.userType = userType;
+
+    public String getUnionId() {
+        return unionId;
     }
 
-    public String getUserType()
-    {
-        return userType;
+    public void setUnionId(String unionId) {
+        this.unionId = unionId;
     }
-    public void setIsPromoter(Integer isPromoter)
-    {
-        this.isPromoter = isPromoter;
+
+    public Date getRegisterDate() {
+        return registerDate;
     }
 
-    public Integer getIsPromoter()
-    {
-        return isPromoter;
+    public void setRegisterDate(Date registerDate) {
+        this.registerDate = registerDate;
     }
-    public void setPayCount(Long payCount)
-    {
-        this.payCount = payCount;
+
+    public String getRegisterCode() {
+        return registerCode;
     }
 
-    public Long getPayCount()
-    {
-        return payCount;
+    public void setRegisterCode(String registerCode) {
+        this.registerCode = registerCode;
     }
-    public void setSpreadCount(Long spreadCount)
-    {
-        this.spreadCount = spreadCount;
+
+    public String getSource() {
+        return source;
     }
 
-    public Long getSpreadCount()
-    {
-        return spreadCount;
+    public void setSource(String source) {
+        this.source = source;
     }
-    public void setAddres(String addres)
-    {
-        this.addres = addres;
+
+    public Long getCompanyId() {
+        return companyId;
     }
 
-    public String getAddres()
-    {
-        return addres;
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
     }
 
-    public void setIsDel(Integer isDel)
-    {
-        this.isDel = isDel;
+    public Long getCompanyUserId() {
+        return companyUserId;
     }
 
-    public Integer getIsDel()
-    {
-        return isDel;
+    public void setCompanyUserId(Long companyUserId) {
+        this.companyUserId = companyUserId;
     }
 
-    public Date getStartCreateTime() {
-        return startCreateTime;
+    public Integer getIsWeixinAuth() {
+        return isWeixinAuth;
     }
 
-    public Date getEndCreateTime() {
-        return endCreateTime;
+    public void setIsWeixinAuth(Integer isWeixinAuth) {
+        this.isWeixinAuth = isWeixinAuth;
     }
 
-    public void setStartCreateTime(Date startCreateTime) {
-        this.startCreateTime = startCreateTime;
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
     }
 
-    public void setEndCreateTime(Date endCreateTime) {
-        this.endCreateTime = endCreateTime;
+    public Long getUserId()
+    {
+        return userId;
+    }
+    public void setUsername(String username)
+    {
+        this.username = username;
+    }
+
+
+    public String getNickname() {
+        return nickname;
     }
 
-    public String getCompanyUserNickName() {
-        return companyUserNickName;
+    public void setNickname(String nickname) {
+        this.nickname = nickname;
     }
 
-    public void setCompanyUserNickName(String companyUserNickName) {
-        this.companyUserNickName = companyUserNickName;
+    public Integer getLevel() {
+        return level;
     }
 
-    public String getCompanyName() {
-        return companyName;
+    public FsUserScrm setLevel(Integer level) {
+        this.level = level;
+        return this;
     }
 
-    public void setCompanyName(String companyName) {
-        this.companyName = companyName;
+    public Integer getStatus() {
+        return status;
     }
 
-    public Integer getIsBecomeMember() {
-        return isBecomeMember;
+    public FsUserScrm setStatus(Integer status) {
+        this.status = status;
+        return this;
     }
 
-    public void setIsBecomeMember(Integer isBecomeMember) {
-        this.isBecomeMember = isBecomeMember;
+    public BigDecimal getBrokeragePrice() {
+        return brokeragePrice;
+    }
+
+    public FsUserScrm setBrokeragePrice(BigDecimal brokeragePrice) {
+        this.brokeragePrice = brokeragePrice;
+        return this;
     }
+
 }

+ 3 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsUserScrmMapper.java

@@ -1,6 +1,7 @@
 package com.fs.hisStore.mapper;
 
 import com.fs.course.vo.newfs.FsCourseAnalysisCountVO;
+import com.fs.his.domain.FsUser;
 import com.fs.his.vo.OptionsVO;
 import com.fs.qw.param.QwFsUserParam;
 import com.fs.qw.vo.QwFsUserVO;
@@ -316,5 +317,6 @@ public interface FsUserScrmMapper
     Map<String, Long> countUserCourse2(UserStatisticsCommonParam param);
 
     Map<String, Long> countCourseDetailsNew(UserStatisticsCommonParam param);
-
+    @Select("select * from fs_user where mp_open_id=#{openId}")
+    FsUserScrm selectFsUserByOpenId(String openId);
 }

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsUserScrmService.java

@@ -270,4 +270,6 @@ public interface IFsUserScrmService
      * @return
      */
     List<FSUserVO> selectFsUserVOListByProject(FsUserScrm fsUser);
+
+    FsUserScrm selectFsUserByOpenId(String openid);
 }

+ 3 - 3
fs-service/src/main/java/com/fs/hisStore/service/impl/FsIntegralOrderScrmServiceImpl.java

@@ -162,7 +162,7 @@ public class FsIntegralOrderScrmServiceImpl implements IFsIntegralOrderScrmServi
         if(integralGoods.getStock()<=0l){
             return R.error("库存不足");
         }
-        if(user.getIntegral().compareTo(BigDecimal.valueOf(integralGoods.getIntegral()))<0 ){
+        if(user.getIntegral()<integralGoods.getIntegral() ){
             return R.error("积分不足");
         }
         FsIntegralOrderScrm order=new FsIntegralOrderScrm();
@@ -181,12 +181,12 @@ public class FsIntegralOrderScrmServiceImpl implements IFsIntegralOrderScrmServi
             //写入日志
             FsUserScrm userMap=new FsUserScrm();
             userMap.setUserId(user.getUserId());
-            userMap.setIntegral(user.getIntegral().subtract(BigDecimal.valueOf(integralGoods.getIntegral())));
+            userMap.setIntegral(user.getIntegral()-integralGoods.getIntegral());
             fsUserMapper.updateFsUser(userMap);
             FsUserIntegralLogsScrm logs = new FsUserIntegralLogsScrm();
             logs.setIntegral(BigDecimal.valueOf(integralGoods.getIntegral()).negate());
             logs.setUserId(order.getUserId());
-            logs.setBalance(userMap.getIntegral());
+            logs.setBalance(BigDecimal.valueOf(userMap.getIntegral()));
             logs.setLogType(4);
             logs.setBusinessId(order.getOrderId().toString());
             logs.setCreateTime(new Date());

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -2578,7 +2578,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService
         FsUserScrm user = userService.selectFsUserById(order.getUserId());
         //增加积分
         BigDecimal newIntegral = NumberUtil.add(order.getUseIntegral(), user.getIntegral());
-        user.setIntegral(newIntegral);
+        user.setIntegral(newIntegral.longValue());
         userService.updateFsUser(user);
         //增加流水
         billService.addBill(user.getUserId(),BillDetailEnum.CATEGORY_2.getValue(),1, BillDetailEnum.TYPE_5.getDesc(),

+ 6 - 6
fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserIntegralLogsScrmServiceImpl.java

@@ -119,14 +119,14 @@ public class FsUserIntegralLogsScrmServiceImpl implements IFsUserIntegralLogsScr
         for (Long id : longs) {
 
             FsUserScrm fsUser = fsUserMapper.selectFsUserByUserId(id);
-            if(fsUser != null &&fsUser.getIntegral().compareTo(BigDecimal.ZERO) == 0){
+            if(fsUser != null &&fsUser.getIntegral()== 0){
                 List<FsUserIntegralLogsScrm> log =  fsUserIntegralLogsMapper.selectFsUserIntegralByStatus0(id);
                 for (FsUserIntegralLogsScrm fsUserIntegralLogs : log) {
-                    BigDecimal integral = fsUser.getIntegral();
+                    Long integral = fsUser.getIntegral();
                     BigDecimal integralLog = fsUserIntegralLogs.getIntegral();
-                    BigDecimal balance = integral.subtract(integralLog);
-                    if (balance.compareTo(BigDecimal.ZERO) < 0) {
-                        balance = BigDecimal.ZERO;
+                    Long balance = integral-integralLog.longValue();
+                    if (balance< 0) {
+                        balance = 0L;
                     }
                     fsUser.setIntegral(balance);
                     fsUserMapper.updateFsUser(fsUser);
@@ -135,7 +135,7 @@ public class FsUserIntegralLogsScrmServiceImpl implements IFsUserIntegralLogsScr
                     FsUserIntegralLogsScrm logs = new FsUserIntegralLogsScrm();
                     logs.setIntegral(integralLog.negate());
                     logs.setUserId(id);
-                    logs.setBalance(balance);
+                    logs.setBalance(BigDecimal.valueOf(balance));
                     logs.setLogType(7);
                     logs.setStatus(1);
                     logs.setCreateTime(new Date());

+ 5 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserScrmServiceImpl.java

@@ -1068,6 +1068,11 @@ public class FsUserScrmServiceImpl implements IFsUserScrmService
         return fsUserMapper.selectFsUserVOListByProject(fsUser);
     }
 
+    @Override
+    public FsUserScrm selectFsUserByOpenId(String openid) {
+        return fsUserMapper.selectFsUserByOpenId(openid);
+    }
+
     /**
      * 查询会员选项列表
      * @param params    参数

+ 2 - 2
fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserSignScrmServiceImpl.java

@@ -48,7 +48,7 @@ public class FsUserSignScrmServiceImpl implements IFsUserSignScrmService
     /**
      * 查询签到记录
      *
-     * @param int 签到记录ID
+     * @param Long 签到记录ID
      * @return 签到记录
      */
     @Override
@@ -174,7 +174,7 @@ public class FsUserSignScrmServiceImpl implements IFsUserSignScrmService
         integralLogsMapper.insertFsUserIntegralLogs(logs);
         //用户积分增加
         FsUserScrm userMap =new FsUserScrm();
-        userMap.setIntegral(NumberUtil.add(user.getIntegral(),signNumber));
+        userMap.setIntegral(user.getIntegral()+signNumber);
         userMap.setUserId(user.getUserId());
         userMap.setSignNum(userSignNum);
 

+ 146 - 129
fs-service/src/main/resources/mapper/hisStore/FsUserScrmMapper.xml

@@ -4,99 +4,76 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.hisStore.mapper.FsUserScrmMapper">
     <resultMap type="FsUserScrm" id="FsUserResult">
-        <result property="userId" column="user_id"/>
-        <result property="username" column="username"/>
-        <result property="password" column="password"/>
-        <result property="realName" column="real_name"/>
-        <result property="birthday" column="birthday"/>
-        <result property="idCard" column="id_card"/>
-        <result property="remark" column="remark"/>
-        <result property="nickname" column="nickname"/>
-        <result property="avatar" column="avatar"/>
-        <result property="phone" column="phone"/>
-        <result property="createTime" column="create_time"/>
-        <result property="updateTime" column="update_time"/>
-        <result property="lastIp" column="last_ip"/>
-        <result property="nowMoney" column="now_money"/>
-        <result property="brokeragePrice" column="brokerage_price"/>
-        <result property="integral" column="integral"/>
-        <result property="signNum" column="sign_num"/>
-        <result property="status" column="status"/>
-        <result property="level" column="level"/>
-        <result property="spreadUserId" column="spread_user_id"/>
-        <result property="spreadTime" column="spread_time"/>
-        <result property="userType" column="user_type"/>
-        <result property="isPromoter" column="is_promoter"/>
-        <result property="payCount" column="pay_count"/>
-        <result property="spreadCount" column="spread_count"/>
-        <result property="addres" column="addres"/>
-        <result property="maOpenId" column="ma_open_id"/>
-        <result property="mpOpenId" column="mp_open_id"/>
-        <result property="unionId" column="union_id"/>
-        <result property="isDel" column="is_del"/>
-        <result property="isWeixinAuth" column="is_weixin_auth"/>
-        <result property="companyId" column="company_id"/>
-        <result property="companyUserId" column="company_user_id"/>
-        <result property="registerDate" column="register_date"/>
-        <result property="registerCode" column="register_code"/>
-        <result property="source" column="source"/>
-        <result property="userCode" column="user_code"/>
-        <result property="isShow" column="is_show"/>
-        <result property="qwExtId"    column="qw_ext_id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="username"    column="username"    />
+        <result property="nickName"    column="nick_name"    />
+        <result property="avatar"    column="avatar"    />
+        <result property="phone"    column="phone"    />
+        <result property="integral"    column="integral"    />
+        <result property="status"    column="status"    />
+        <result property="level"    column="level"    />
+        <result property="spreadUserId"    column="spread_user_id"    />
+        <result property="spreadTime"    column="spread_time"    />
+        <result property="userType"    column="user_type"    />
+        <result property="isPromoter"    column="is_promoter"    />
+        <result property="payCount"    column="pay_count"    />
+        <result property="spreadCount"    column="spread_count"    />
+        <result property="addres"    column="addres"    />
+        <result property="tuiUserId"    column="tui_user_id"    />
+        <result property="tuiTime"    column="tui_time"    />
+        <result property="tuiUserCount"    column="tui_user_count"    />
+        <result property="maOpenId"    column="ma_open_id"    />
+        <result property="mpOpenId"    column="mp_open_id"    />
+        <result property="unionId"    column="union_id"    />
+        <result property="isDel"    column="is_del"    />
+        <result property="userCode"    column="user_code"    />
+        <result property="remark"    column="remark"    />
+        <result property="nickname"    column="nickname"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="lastIp"    column="last_ip"    />
+        <result property="nowMoney"    column="now_money"    />
+        <result property="brokeragePrice"    column="brokerage_price"    />
+        <result property="balance"    column="balance"    />
+        <result property="signNum"    column="sign_num"    />
+        <result property="integralStatus"    column="integral_status"    />
+        <result property="isBuy"    column="is_buy"    />
+        <result property="password"    column="password"    />
+        <result property="realName"    column="real_name"    />
+        <result property="birthday"    column="birthday"    />
+        <result property="idCard"    column="id_card"    />
+        <result property="jpushId"    column="jpush_id"    />
+        <result property="isVip"    column="is_vip"    />
+        <result property="vipStartDate"    column="vip_start_date"    />
+        <result property="vipEndDate"    column="vip_end_date"    />
+        <result property="vipLevel"    column="vip_level"    />
+        <result property="vipStatus"    column="vip_status"    />
+        <result property="sex"    column="sex"    />
+        <result property="storeOpenId"    column="store_open_id"    />
+        <result property="isOfficialAccountAuth"    column="is_official_account_auth"    />
+        <result property="isPush"    column="is_push"    />
+        <result property="isIndividuationPush"    column="is_individuation_push"    />
+        <result property="isWeixinAuth"    column="is_weixin_auth"    />
+        <result property="companyId"    column="company_id"    />
+        <result property="companyUserId"    column="company_user_id"    />
+        <result property="registerDate"    column="register_date"    />
+        <result property="registerCode"    column="register_code"    />
+        <result property="loginDevice"    column="login_device"    />
+        <result property="source"    column="source"    />
         <result property="isAddQw"    column="is_add_qw"    />
-        <!--<result property="qwRepeat" column="qw_repeat"/>
-        <result property="userRepeat" column="user_repeat"/>
-        <result property="payOrder" column="pay_order"/>
-        <result property="isBecomeMember" column="is_become_member"/>-->
+        <result property="qwUserId"    column="qw_user_id"    />
+        <result property="isShow"    column="is_show"    />
+        <result property="parentId"    column="parent_id"    />
+        <result property="courseMaOpenId"    column="course_ma_open_id"    />
+        <result property="historyApp"    column="history_app"    />
+        <result property="qwExtId"    column="qw_ext_id"    />
+        <result property="rank"    column="rank"    />
+        <result property="react"    column="react"    />
     </resultMap>
 
     <sql id="selectFsUserVo">
-        select user_id,
-               qw_ext_id,
-               is_show,
-               username,
-               password,
-               real_name,
-               birthday,
-               id_card,
-               remark,
-               nickname,
-               avatar,
-               phone,
-               create_time,
-               update_time,
-               last_ip,
-               now_money,
-               brokerage_price,
-               integral,
-               sign_num,
-               status,
-               level,
-               spread_user_id,
-               spread_time,
-               user_type,
-               is_promoter,
-               pay_count,
-               spread_count,
-               addres,
-               ma_open_id,
-               mp_open_id,
-               union_id,
-               is_del,
-               is_weixin_auth,
-               company_id,
-               is_add_qw,
-               company_user_id,
-               register_date,
-               register_code,
-               source,
-               user_code
-        <!--qw_repeat,
-        user_repeat,
-        pay_order,
-        is_become_member -->
- from fs_user
-</sql>
+        select user_id, username, nick_name, avatar, phone, integral, status, `level`, spread_user_id, spread_time, user_type, is_promoter, pay_count, spread_count, addres, tui_user_id, tui_time, tui_user_count, ma_open_id, mp_open_id, union_id, is_del, user_code, remark, nickname, create_time, update_time, last_ip, now_money, brokerage_price, balance, sign_num, integral_status, is_buy, password, real_name, birthday, id_card, jpush_id, is_vip, vip_start_date, vip_end_date, vip_level, vip_status, sex, store_open_id, is_official_account_auth, is_push, is_individuation_push, is_weixin_auth, company_id, company_user_id, register_date, register_code, test, login_device, source, is_add_qw, qw_user_id, is_show, parent_id, course_ma_open_id, history_app, qw_ext_id, `rank`, react from fs_user
+    </sql>
 
     <select id="selectFsUserList" parameterType="FsUserScrm" resultMap="FsUserResult">
         <include refid="selectFsUserVo"/>
@@ -405,93 +382,133 @@
         insert into fs_user
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="username != null">username,</if>
-            <if test="password != null">password,</if>
-            <if test="realName != null">real_name,</if>
-            <if test="birthday != null">birthday,</if>
-            <if test="idCard != null">id_card,</if>
-            <if test="remark != null">remark,</if>
-            <if test="nickname != null">nickname,</if>
+            <if test="nickName != null">nick_name,</if>
             <if test="avatar != null">avatar,</if>
             <if test="phone != null">phone,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="lastIp != null">last_ip,</if>
-            <if test="nowMoney != null">now_money,</if>
-            <if test="brokeragePrice != null">brokerage_price,</if>
             <if test="integral != null">integral,</if>
-            <if test="signNum != null">sign_num,</if>
             <if test="status != null">status,</if>
             <if test="level != null">level,</if>
             <if test="spreadUserId != null">spread_user_id,</if>
             <if test="spreadTime != null">spread_time,</if>
-            <if test="userType != null and userType != ''">user_type,</if>
+            <if test="userType != null">user_type,</if>
             <if test="isPromoter != null">is_promoter,</if>
             <if test="payCount != null">pay_count,</if>
             <if test="spreadCount != null">spread_count,</if>
-            <if test="addres != null and addres != ''">addres,</if>
+            <if test="addres != null">addres,</if>
+            <if test="tuiUserId != null">tui_user_id,</if>
+            <if test="tuiTime != null">tui_time,</if>
+            <if test="tuiUserCount != null">tui_user_count,</if>
             <if test="maOpenId != null">ma_open_id,</if>
             <if test="mpOpenId != null">mp_open_id,</if>
             <if test="unionId != null">union_id,</if>
             <if test="isDel != null">is_del,</if>
+            <if test="userCode != null">user_code,</if>
+            <if test="remark != null">remark,</if>
+            <if test="nickname != null">nickname,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="lastIp != null">last_ip,</if>
+            <if test="nowMoney != null">now_money,</if>
+            <if test="brokeragePrice != null">brokerage_price,</if>
+            <if test="balance != null">balance,</if>
+            <if test="signNum != null">sign_num,</if>
+            <if test="integralStatus != null">integral_status,</if>
+            <if test="isBuy != null">is_buy,</if>
+            <if test="password != null">password,</if>
+            <if test="realName != null">real_name,</if>
+            <if test="birthday != null">birthday,</if>
+            <if test="idCard != null">id_card,</if>
+            <if test="jpushId != null">jpush_id,</if>
+            <if test="isVip != null">is_vip,</if>
+            <if test="vipStartDate != null">vip_start_date,</if>
+            <if test="vipEndDate != null">vip_end_date,</if>
+            <if test="vipLevel != null">vip_level,</if>
+            <if test="vipStatus != null">vip_status,</if>
+            <if test="sex != null">sex,</if>
+            <if test="storeOpenId != null">store_open_id,</if>
+            <if test="isOfficialAccountAuth != null">is_official_account_auth,</if>
+            <if test="isPush != null">is_push,</if>
+            <if test="isIndividuationPush != null">is_individuation_push,</if>
             <if test="isWeixinAuth != null">is_weixin_auth,</if>
             <if test="companyId != null">company_id,</if>
             <if test="companyUserId != null">company_user_id,</if>
             <if test="registerDate != null">register_date,</if>
             <if test="registerCode != null">register_code,</if>
+            <if test="loginDevice != null">login_device,</if>
             <if test="source != null">source,</if>
-            <if test="userCode != null">user_code,</if>
+            <if test="isAddQw != null">is_add_qw,</if>
+            <if test="qwUserId != null">qw_user_id,</if>
             <if test="isShow != null">is_show,</if>
+            <if test="parentId != null">parent_id,</if>
+            <if test="courseMaOpenId != null">course_ma_open_id,</if>
             <if test="qwExtId != null">qw_ext_id,</if>
-            <if test="isAddQw != null">is_add_qw,</if>
-            <!--<if test="qwRepeat != null">qw_repeat,</if>
-            <if test="userRepeat != null">user_repeat,</if>
-            <if test="payOrder != null">pay_order,</if>
-            <if test="isBecomeMember != null">is_become_member,</if>-->
+            <if test="rank != null">rank,</if>
+            <if test="react != null">react,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="username != null">#{username},</if>
-            <if test="password != null">#{password},</if>
-            <if test="realName != null">#{realName},</if>
-            <if test="birthday != null">#{birthday},</if>
-            <if test="idCard != null">#{idCard},</if>
-            <if test="remark != null">#{remark},</if>
-            <if test="nickname != null">#{nickname},</if>
+            <if test="nickName != null">#{nickName},</if>
             <if test="avatar != null">#{avatar},</if>
             <if test="phone != null">#{phone},</if>
-            <if test="createTime != null">#{createTime},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="lastIp != null">#{lastIp},</if>
-            <if test="nowMoney != null">#{nowMoney},</if>
-            <if test="brokeragePrice != null">#{brokeragePrice},</if>
             <if test="integral != null">#{integral},</if>
-            <if test="signNum != null">#{signNum},</if>
             <if test="status != null">#{status},</if>
             <if test="level != null">#{level},</if>
             <if test="spreadUserId != null">#{spreadUserId},</if>
             <if test="spreadTime != null">#{spreadTime},</if>
-            <if test="userType != null and userType != ''">#{userType},</if>
+            <if test="userType != null">#{userType},</if>
             <if test="isPromoter != null">#{isPromoter},</if>
             <if test="payCount != null">#{payCount},</if>
             <if test="spreadCount != null">#{spreadCount},</if>
-            <if test="addres != null and addres != ''">#{addres},</if>
+            <if test="addres != null">#{addres},</if>
+            <if test="tuiUserId != null">#{tuiUserId},</if>
+            <if test="tuiTime != null">#{tuiTime},</if>
+            <if test="tuiUserCount != null">#{tuiUserCount},</if>
             <if test="maOpenId != null">#{maOpenId},</if>
             <if test="mpOpenId != null">#{mpOpenId},</if>
             <if test="unionId != null">#{unionId},</if>
             <if test="isDel != null">#{isDel},</if>
+            <if test="userCode != null">#{userCode},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="nickname != null">#{nickname},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="lastIp != null">#{lastIp},</if>
+            <if test="nowMoney != null">#{nowMoney},</if>
+            <if test="brokeragePrice != null">#{brokeragePrice},</if>
+            <if test="balance != null">#{balance},</if>
+            <if test="signNum != null">#{signNum},</if>
+            <if test="integralStatus != null">#{integralStatus},</if>
+            <if test="isBuy != null">#{isBuy},</if>
+            <if test="password != null">#{password},</if>
+            <if test="realName != null">#{realName},</if>
+            <if test="birthday != null">#{birthday},</if>
+            <if test="idCard != null">#{idCard},</if>
+            <if test="jpushId != null">#{jpushId},</if>
+            <if test="isVip != null">#{isVip},</if>
+            <if test="vipStartDate != null">#{vipStartDate},</if>
+            <if test="vipEndDate != null">#{vipEndDate},</if>
+            <if test="vipLevel != null">#{vipLevel},</if>
+            <if test="vipStatus != null">#{vipStatus},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="storeOpenId != null">#{storeOpenId},</if>
+            <if test="isOfficialAccountAuth != null">#{isOfficialAccountAuth},</if>
+            <if test="isPush != null">#{isPush},</if>
+            <if test="isIndividuationPush != null">#{isIndividuationPush},</if>
             <if test="isWeixinAuth != null">#{isWeixinAuth},</if>
             <if test="companyId != null">#{companyId},</if>
             <if test="companyUserId != null">#{companyUserId},</if>
             <if test="registerDate != null">#{registerDate},</if>
             <if test="registerCode != null">#{registerCode},</if>
+            <if test="loginDevice != null">#{loginDevice},</if>
             <if test="source != null">#{source},</if>
-            <if test="userCode != null">#{userCode},</if>
+            <if test="isAddQw != null">#{isAddQw},</if>
+            <if test="qwUserId != null">#{qwUserId},</if>
             <if test="isShow != null">#{isShow},</if>
+            <if test="parentId != null">#{parentId},</if>
+            <if test="courseMaOpenId != null">#{courseMaOpenId},</if>
             <if test="qwExtId != null">#{qwExtId},</if>
-            <if test="isAddQw != null">#{isAddQw},</if>
-            <if test="qwRepeat != null">#{qwRepeat},</if>
-            <if test="userRepeat != null">#{userRepeat},</if>
-            <if test="payOrder != null">#{payOrder},</if>
-            <if test="isBecomeMember != null">#{isBecomeMember},</if>
+            <if test="rank != null">#{rank},</if>
+            <if test="react != null">#{react},</if>
         </trim>
     </insert>
 

+ 88 - 53
fs-user-app/src/main/java/com/fs/app/controller/store/WxH5MpScrmController.java

@@ -9,7 +9,10 @@ import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
+import com.fs.course.domain.FsUserCompanyUser;
 import com.fs.course.mapper.FsCourseWatchLogMapper;
+import com.fs.his.domain.FsUser;
+import com.fs.hisStore.domain.FsUserCompanyUserScrm;
 import com.fs.hisStore.service.IFsUserCompanyUserScrmService;
 import com.fs.hisStore.service.IFsUserScrmService;
 import com.fs.qw.mapper.QwExternalContactMapper;
@@ -34,6 +37,7 @@ import javax.validation.Valid;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
 @Api("会员-h5-微信相关接口(后面不需要这个接口了,再删除))")
@@ -68,63 +72,94 @@ public class WxH5MpScrmController {
     @ApiOperation("课程分享链接公众号登录")
     @PostMapping("/loginByMp")
     public R loginByMp(@Valid @RequestBody FsUserLoginByMpParam param) throws WxErrorException {
-//        try {
-            //获取微信用户信息
+        log.info("=====================进入小程序授权登录, 入参: {}", param);
+
+        // 参数校验
+        if (StringUtils.isBlank(param.getCode())) {
+            return R.error("code不存在");
+        }
+
+        // 公司状态校验
+        Company company = companyService.selectCompanyById(param.getCompanyId());
+        if (company == null || company.getStatus() == 0) {
+            return R.error("注册失败团队已停用,或不存在!");
+        }
+
+        // 客服状态校验
+        CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
+        if (companyUser == null || "1".equals(companyUser.getStatus())) {
+            return R.error("注册失败客服已停用,或不存在!");
+        }
+
+        try {
+            // 获取微信用户信息
             WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
             WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
-            //1、特殊(需求设计:需要根据公司是否开启黑名单来设置会员初始化的状态)
-            Company company = null;
-            if(param.getCompanyId() != null){
-                company = companyService.selectCompanyById(param.getCompanyId());
-            }
-            // 根据销售后台设置的  是否需要单独注册会员 来判断是否需要设置销售的值
-            CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
-
-            FsUserScrm user;
-            if(StringUtils.isNotEmpty(wxMpUser.getUnionId())) {
-                user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
-            } else {
-                user = userService.selectFsUserByMpOpenId(wxMpUser.getOpenid());
-            }
-            if (user != null) {
-                //修改
-                FsUserScrm userMap = new FsUserScrm();
-                userMap.setUserId(user.getUserId());
-                userMap.setMpOpenId(wxMpUser.getOpenid());
-                userMap.setUnionId(wxMpUser.getUnionId());
-                userMap.setUpdateTime(new DateTime());
-                userMap.setAvatar(wxMpUser.getHeadImgUrl());
-                userMap.setNickname(wxMpUser.getNickname());
-                userService.updateFsUser(userMap);
-            } else {
-                //新增
-                user = new FsUserScrm();
-                user.setNickname(wxMpUser.getNickname());
-                user.setAvatar(wxMpUser.getHeadImgUrl());
-                user.setMpOpenId(wxMpUser.getOpenid());
-                user.setUnionId(wxMpUser.getUnionId());
-                user.setCreateTime(new Date());
-                userService.insertFsUser(user);
-                if((companyUser.getIsAllowedAllRegister() == null || companyUser.getIsAllowedAllRegister() != 0) && companyUser.getIsNeedRegisterMember() != 1){
-                    int defaultStatus = (company != null ? company.getFsUserIsDefaultBlack() : 0) == 1 ? 0 : 1;
-                    userCompanyUserService.bindRelationship(user.getUserId(), param.getProjectId(), companyUser.getCompanyId(), companyUser.getUserId(), defaultStatus);
-                }
+
+
+            // 处理用户信息
+            FsUserScrm user = processUserInfo(wxMpUser, company,companyUser,param);
+
+            // 检查用户是否已绑定其他销售
+            FsUserCompanyUserScrm userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
+            if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
+                return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
             }
-            log.error("用户信息user: {}, 用户id: {}", user, user.getUserId());
-            String token = jwtUtils.generateToken(user.getUserId());
-            redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
-            Map<String, Object> map = new HashMap<>();
-            map.put("token", token);
-            map.put("user", user);
-            return R.ok(map);
-//        } catch (WxErrorException e) {
-//            if (e.getError().getErrorCode() == 40163) {
-//                return R.error(40163, e.getError().getErrorMsg());
-//            } else {
-//                return R.error("授权失败," + e.getMessage());
-//            }
-//        }
 
+//            // 处理用户与公司的关系
+//            processUserCompanyRelationship(user, param, companyUser, company);
+
+
+
+            // 生成token并返回结果
+            return generateLoginResult(user);
+
+
+        } catch (WxErrorException e) {
+            this.logger.error(e.getMessage(), e);
+            return R.error("授权失败," + e.getMessage());
+        }
+    }
+    private R generateLoginResult(FsUserScrm user) {
+        String token = jwtUtils.generateToken(user.getUserId());
+        redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("token", token);
+        result.put("user", user);
+        return R.ok(result);
+    }
+
+    private FsUserScrm processUserInfo(WxOAuth2UserInfo wxMpUser, Company company,CompanyUser companyUser,FsUserLoginByMpParam param) {
+        FsUserScrm user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
+
+        if (user != null) {
+            // 更新现有用户信息
+            FsUserScrm userUpdate = new FsUserScrm();
+            userUpdate.setUserId(user.getUserId());
+            userUpdate.setMpOpenId(wxMpUser.getOpenid());
+            userUpdate.setUnionId(wxMpUser.getUnionId());
+            userUpdate.setUpdateTime(new DateTime());
+            userUpdate.setNickName(wxMpUser.getNickname());
+            userUpdate.setAvatar(wxMpUser.getHeadImgUrl());
+            userService.updateFsUser(userUpdate);
+            return userUpdate;
+        } else {
+            // 创建新用户
+            FsUserScrm newUser = new FsUserScrm();
+            newUser.setNickName(wxMpUser.getNickname());
+            newUser.setAvatar(wxMpUser.getHeadImgUrl());
+            newUser.setStatus(1);
+            newUser.setMpOpenId(wxMpUser.getOpenid());
+//            newUser.setCompanyId(company.getCompanyId());
+//            newUser.setCompanyUserId(companyUser.getUserId());
+            newUser.setUnionId(wxMpUser.getUnionId());
+            newUser.setCreateTime(new Date());
+            newUser.setStatus(company != null && company.getFsUserIsDefaultBlack() == 1 ? 0 : 1);
+            userService.insertFsUser(newUser);
+
+            return newUser;
+        }
     }
 
 }

+ 36 - 31
fs-user-app/src/main/java/com/fs/app/controller/store/WxUserScrmController.java

@@ -14,6 +14,7 @@ import com.fs.common.exception.CustomException;
 import com.fs.common.utils.IpUtil;
 import com.fs.core.config.WxMaConfiguration;
 import com.fs.core.config.WxMpProperties;
+import com.fs.his.domain.FsUser;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.hisStore.domain.FsUserScrm;
 import com.fs.hisStore.enums.SysConfigEnum;
@@ -39,6 +40,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Date;
 
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 /**
  * 微信小程序用户接口
  *
@@ -272,63 +275,64 @@ public class WxUserScrmController extends AppBaseController {
             WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
             // 解密
             WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
-            FsUserScrm user=userService.selectFsUserByPhone(phoneNoInfo.getPhoneNumber());
-
+            FsUserScrm user=new FsUserScrm();
+            if (session.getUnionid()!=null){
+                user = userService.selectFsUserByUnionid(session.getUnionid());
+                if (user==null){
+                    user = userService.selectFsUserByOpenId(session.getOpenid());
+                }
+            }else {
+                user = userService.selectFsUserByOpenId(session.getOpenid());
+            }
             //FsUserScrm user=userService.selectFsUserByMaOpenId(session.getOpenid());
             String ip = IpUtil.getRequestIp();
             if(user==null){
-                //user=userService.selectFsUserByUnionId(session.getUnionid());
-                user=userService.selectFsUserByMaOpenId(session.getOpenid());
-                if(user!=null){
+                //新用户
+                String phoneNumber = phoneNoInfo.getPhoneNumber();
+                //查询手机号是否存在,如果存在,更新
+                FsUserScrm checkPhone=userService.selectFsUserByPhone(encryptPhone(phoneNumber));
+                if (checkPhone==null){
+                    checkPhone=userService.selectFsUserByPhone(phoneNumber);
+                }
+                if(checkPhone!=null){
+                    user=checkPhone;
                     FsUserScrm userMap=new FsUserScrm();
-                    userMap.setUserId(user.getUserId());
-                    userMap.setPhone(phoneNoInfo.getPhoneNumber());
-                    userMap.setUpdateTime(new DateTime());
-                    userMap.setIsShow(1);
                     userMap.setMaOpenId(session.getOpenid());
-                    if(StringUtils.isNotEmpty(session.getUnionid())){
+                    userMap.setUserId(checkPhone.getUserId());
+                    userMap.setUpdateTime(new DateTime());
+                    if(session.getUnionid()!=null){
                         userMap.setUnionId(session.getUnionid());
                     }
-                    userMap.setLastIp(ip);
                     userService.updateFsUser(userMap);
                 }
                 else{
                     //写入
                     user=new FsUserScrm();
-//                    if(param.getTuiUserId()!=null&&param.getTuiUserId()>0){
-//                        FsUserScrm tuiUser=userService.selectFsUserById(param.getTuiUserId());
-//                        if(tuiUser!=null){
-//                            user.setSpreadUserId(param.getTuiUserId());
-//                        }
-//                    }
-                    user.setUsername("");
                     user.setPhone(phoneNoInfo.getPhoneNumber());
-//                    user.setPhone("");
-                    user.setNickname("微信用户");
+                    user.setNickName("微信用户"+phoneNoInfo.getPhoneNumber().substring(phoneNoInfo.getPhoneNumber().length()-4));
+                    user.setAvatar("https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230725/a848605591384ec29d49773dd58d9345.jpg");
                     user.setStatus(1);
                     user.setMaOpenId(session.getOpenid());
-                    user.setLastIp(ip);
-                    user.setIsShow(1);
-                    user.setIsWeixinAuth(0);
                     user.setCreateTime(new Date());
-                    if(StringUtils.isNotEmpty(session.getUnionid())){
+                    if(session.getUnionid()!=null){
                         user.setUnionId(session.getUnionid());
                     }
                     userService.insertFsUser(user);
                 }
             }
             else{
+                if(user.getStatus().equals(0)){
+
+                    return R.error("此会员已禁用");
+                }
                 FsUserScrm userMap=new FsUserScrm();
                 userMap.setUserId(user.getUserId());
-                userMap.setUpdateTime(new DateTime());
-                userMap.setPhone(phoneNoInfo.getPhoneNumber());
-                userMap.setLastIp(ip);
-                if(StringUtils.isNotEmpty(session.getUnionid())){
+                if(session.getUnionid()!=null){
                     userMap.setUnionId(session.getUnionid());
                 }
-                if(StringUtils.isNotEmpty(session.getOpenid())){
-                    userMap.setMaOpenId(session.getOpenid());
-                }
+                userMap.setMaOpenId(session.getOpenid());
+                userMap.setPhone(phoneNoInfo.getPhoneNumber());
+                userMap.setUpdateTime(new DateTime());
                 userService.updateFsUser(userMap);
             }
             String token = jwtUtils.generateToken(user.getUserId());
@@ -386,6 +390,7 @@ public class WxUserScrmController extends AppBaseController {
                     user.setPhone(phoneNoInfo.getPhoneNumber());
 //                    user.setPhone("");
                     user.setNickname("微信用户");
+                    user.setNickName("微信用户");
                     user.setStatus(1);
                     user.setMaOpenId(session.getOpenid());
                     user.setLastIp(ip);