Ver Fonte

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_his_scrm_java

15376779826 há 3 dias atrás
pai
commit
84123ec2c1
60 ficheiros alterados com 1322 adições e 862 exclusões
  1. 1 1
      fs-admin/src/main/java/com/fs/his/task/Task.java
  2. 2 2
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreProductScrmController.java
  3. 9 8
      fs-common-api/src/main/java/com/fs/framework/config/MyBatisConfig.java
  4. 1 1
      fs-common/src/main/java/com/fs/common/utils/DictUtils.java
  5. 2 1
      fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java
  6. 25 0
      fs-company/src/main/java/com/fs/company/controller/company/CompanyRechargeController.java
  7. 1 1
      fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java
  8. 0 1
      fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsInfoController.java
  9. 0 12
      fs-qw-api/src/main/java/com/fs/app/service/QwDataCallbackService.java
  10. 72 0
      fs-qwhook-sop/src/main/java/com/fs/app/controller/ApisQwUserController.java
  11. 70 0
      fs-qwhook-sop/src/main/java/com/fs/app/controller/QwUserController.java
  12. 16 0
      fs-qwhook-sop/src/main/java/com/fs/app/params/LoginBindCompanyParam.java
  13. 8 7
      fs-qwhook-sop/src/main/java/com/fs/framework/config/MyBatisConfig.java
  14. 4 149
      fs-service/src/main/java/com/fs/company/domain/CompanyRecharge.java
  15. 1 0
      fs-service/src/main/java/com/fs/company/param/CompanyRechargeParam.java
  16. 3 2
      fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java
  17. 8 8
      fs-service/src/main/java/com/fs/course/service/IFsCourseProductOrderService.java
  18. 1 1
      fs-service/src/main/java/com/fs/course/service/IFsUserCourseOrderService.java
  19. 1 1
      fs-service/src/main/java/com/fs/course/service/IFsUserVipOrderService.java
  20. 10 8
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseProductOrderServiceImpl.java
  21. 21 27
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseTrafficLogServiceImpl.java
  22. 5 3
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseOrderServiceImpl.java
  23. 5 3
      fs-service/src/main/java/com/fs/course/service/impl/FsUserVipOrderServiceImpl.java
  24. 1 1
      fs-service/src/main/java/com/fs/his/mapper/FsStorePaymentMapper.java
  25. 1 1
      fs-service/src/main/java/com/fs/his/service/IFsInquiryOrderService.java
  26. 1 1
      fs-service/src/main/java/com/fs/his/service/IFsIntegralOrderService.java
  27. 2 1
      fs-service/src/main/java/com/fs/his/service/IFsPackageOrderService.java
  28. 1 1
      fs-service/src/main/java/com/fs/his/service/IFsStoreOrderService.java
  29. 1 5
      fs-service/src/main/java/com/fs/his/service/impl/FsExportTaskServiceImpl.java
  30. 4 2
      fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderServiceImpl.java
  31. 3 1
      fs-service/src/main/java/com/fs/his/service/impl/FsIntegralOrderServiceImpl.java
  32. 8 5
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java
  33. 5 3
      fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java
  34. 15 15
      fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java
  35. 2 0
      fs-service/src/main/java/com/fs/his/vo/FsDoctorArticleUVO.java
  36. 424 293
      fs-service/src/main/java/com/fs/hisStore/domain/FsUserScrm.java
  37. 3 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsUserScrmMapper.java
  38. 2 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsUserScrmService.java
  39. 3 3
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsIntegralOrderScrmServiceImpl.java
  40. 1 1
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  41. 6 6
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserIntegralLogsScrmServiceImpl.java
  42. 5 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserScrmServiceImpl.java
  43. 2 2
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserSignScrmServiceImpl.java
  44. 2 0
      fs-service/src/main/java/com/fs/qw/domain/QwCompany.java
  45. 9 2
      fs-service/src/main/java/com/fs/qw/service/impl/QwCompanyServiceImpl.java
  46. 0 5
      fs-service/src/main/java/com/fs/todo/mapper/FsTodoItemsMapper.java
  47. 92 0
      fs-service/src/main/resources/application-config-druid-nmgyt.yml
  48. 155 0
      fs-service/src/main/resources/application-druid-nmgyt.yml
  49. 7 1
      fs-service/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml
  50. 2 1
      fs-service/src/main/resources/mapper/his/FsUserMapper.xml
  51. 146 129
      fs-service/src/main/resources/mapper/hisStore/FsUserScrmMapper.xml
  52. 7 7
      fs-user-app/src/main/java/com/fs/app/controller/HuifuPayController.java
  53. 2 2
      fs-user-app/src/main/java/com/fs/app/controller/InquiryOrderController.java
  54. 6 6
      fs-user-app/src/main/java/com/fs/app/controller/TzPayController.java
  55. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/UserVipController.java
  56. 7 7
      fs-user-app/src/main/java/com/fs/app/controller/WxPayController.java
  57. 6 6
      fs-user-app/src/main/java/com/fs/app/controller/YbPayController.java
  58. 88 53
      fs-user-app/src/main/java/com/fs/app/controller/store/WxH5MpScrmController.java
  59. 36 31
      fs-user-app/src/main/java/com/fs/app/controller/store/WxUserScrmController.java
  60. 0 33
      fs-user-app/src/test/java/com/fs/app/controller/medical/PhysicalExamReportControllerTest.java

+ 1 - 1
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -802,7 +802,7 @@ public class Task {
 
 
     public void tb() {
-        packageOrderService.payConfirm("", "1780763211956486144", "1075999515888117190", "14", 1);
+        packageOrderService.payConfirm("", "1780763211956486144", "1075999515888117190", "14", 1,null,null);
     }
 
 

+ 2 - 2
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreProductScrmController.java

@@ -170,8 +170,8 @@ public class FsStoreProductScrmController extends BaseController
 
     @ApiOperation(value = "生成属性")
     @PostMapping(value = "/genFormatAttr/{productId}")
-    public ResponseEntity genFormatAttr(@PathVariable Long productId,@RequestBody FormatAttrParam param){
-        return new ResponseEntity<>(fsStoreProductService.getFormatAttr(productId,param.getAttrs(),param.getStores()), HttpStatus.OK);
+    public ResponseEntity genFormatAttr(@PathVariable Long productId, @RequestBody String jsonStr){
+        return new ResponseEntity<>(fsStoreProductService.getFormatAttr(productId,jsonStr,null), HttpStatus.OK);
     }
 
 

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

+ 1 - 1
fs-common/src/main/java/com/fs/common/utils/DictUtils.java

@@ -44,7 +44,7 @@ public class DictUtils
         if (StringUtils.isNotNull(cacheObj))
         {
             List<SysDictData> dictDatas = StringUtils.cast(cacheObj);
-            log.info("获取缓存 key: {} values: {}",key,dictDatas);
+//            log.info("获取缓存 key: {} values: {}",key,dictDatas);
             return dictDatas;
         }
         return null;

+ 2 - 1
fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java

@@ -206,7 +206,7 @@ public class FsUserCourseVideoController extends AppBaseController {
     @GetMapping("/todayCourseList")
     @ApiOperation("今日课程")
     public ResponseResult<PageInfo<FsUserCourseVideoPageListVO>> todayCourseList(@RequestParam(defaultValue = "1") Integer pageNum,
-                                                                                 @RequestParam(defaultValue = "10") Integer pageSize) {
+                                                                                 @RequestParam(defaultValue = "10") Integer pageSize, String keyword) {
         Long companyId = getCompanyId();
         if (Objects.isNull(companyId)) {
             ResponseResult.fail(400, "未获取到公司ID,请重新登录后再试");
@@ -216,6 +216,7 @@ public class FsUserCourseVideoController extends AppBaseController {
         params.put("companyId", companyId);
 //        params.put("dayDate", LocalDate.now());
         params.put("companyUserId", Long.parseLong(getUserId()));
+        params.put("keyword", keyword);
 
         PageHelper.startPage(pageNum, pageSize);
         List<FsUserCourseVideoPageListVO> list = fsUserCourseVideoService.selectCourseVideoListByMap(params);

+ 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("提交成功,等待审核");
 
+    }
 
 }

+ 1 - 1
fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java

@@ -261,7 +261,7 @@ public class CompanyUserController extends BaseController
         String encodedStatus = URLEncoder.encode(status, StandardCharsets.UTF_8.toString());
 
         String url="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+user.getCorpId()+"&redirect_uri=" +
-                "http://"+qwCompany.getRealmNameUrl()+"/qwh5/pages/user/index?corpId="+user.getCorpId() +
+                "http://"+qwCompany.getRealmNameUrl()+"/loginqw/pages/companyLogin/index?corpId="+user.getCorpId() +
                 "&response_type=code&scope=snsapi_base&state="+encodedStatus+"&agentid="+qwCompany.getServerAgentId()+"#wechat_redirect";
 
         R andUpload = QRCodeUtils.createAndUpload(url);

+ 0 - 1
fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsInfoController.java

@@ -71,7 +71,6 @@ public class SopUserLogsInfoController extends BaseController
     public TableDataInfo list(SopUserLogsInfo sopUserLogsInfo) {
         startPage();
         if (sopUserLogsInfo.getFilterMode() == 1) {
-            startPage();
             List<SopUserLogsInfo> list = sopUserLogsInfoService.selectSopUserLogsInfoList(sopUserLogsInfo);
 
             if (!list.isEmpty()) {

+ 0 - 12
fs-qw-api/src/main/java/com/fs/app/service/QwDataCallbackService.java

@@ -111,18 +111,6 @@ public class QwDataCallbackService {
                         delQwUser.setIsDel(2);
                         delQwUser.setStatus(0);
                         qwUserMapper.updateQwUser(delQwUser);
-                        QwExternalContact qwExternalContact = new QwExternalContact();
-                        qwExternalContact.setUserId(fromUserName);
-                        qwExternalContact.setStatus(0);
-                        qwExternalContact.setCorpId(corpId);
-                        List<QwExternalContact> qwExternalContacts = qwExternalContactService.selectQwExternalContactList(qwExternalContact);
-                        for (QwExternalContact externalContact : qwExternalContacts) {
-                            QwExternalContact lz = new QwExternalContact();
-                            lz.setId(externalContact.getId());
-                            lz.setStatus(1);
-                            qwExternalContactMapper.updateQwExternalContact(lz);
-                        }
-
                     }
                     break;
                 case "subscribe":

+ 72 - 0
fs-qwhook-sop/src/main/java/com/fs/app/controller/ApisQwUserController.java

@@ -1,8 +1,20 @@
 package com.fs.app.controller;
 
+import com.fs.app.params.LoginBindCompanyParam;
+import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.R;
+import com.fs.common.enums.BusinessType;
 import com.fs.common.exception.CustomException;
+import com.fs.common.exception.base.BaseException;
+import com.fs.common.utils.PatternUtils;
+import com.fs.common.utils.SecurityUtils;
+import com.fs.company.domain.Company;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.param.CompanyUserCodeParam;
+import com.fs.company.service.ICompanyPostService;
+import com.fs.company.service.ICompanyService;
+import com.fs.company.service.ICompanyUserService;
 import com.fs.course.param.FsCourseListBySidebarParam;
 import com.fs.qw.domain.QwExternalContactInfo;
 import com.fs.qw.domain.QwUser;
@@ -21,6 +33,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
@@ -42,6 +55,19 @@ public class ApisQwUserController extends BaseController {
     @Autowired
     private ISopUserLogsInfoService iSopUserLogsInfoService;
 
+    @Autowired
+    private ICompanyUserService companyUserService;
+
+    @Autowired
+    ICompanyUserService userService;
+
+    @Autowired
+    private ICompanyService companyService;
+
+    @Autowired
+    ICompanyPostService postService;
+
+
     @GetMapping("/details")
     @ApiOperation("会员看课详情")
     public R getUserDetails(@ApiParam(value = "外部联系人id", required = true) @RequestParam Long contactId,
@@ -116,4 +142,50 @@ public class ApisQwUserController extends BaseController {
         return R.ok().put("data", result);
     }
 
+    /**
+     * 注册或者绑定销售
+     */
+    @PostMapping("/registerCompany")
+    @Log(title = "注册或者绑定销售", businessType = BusinessType.INSERT)
+    public R registerCompany(@RequestBody CompanyUserCodeParam userCodeParam) {
+        return companyUserService.registerCompany(userCodeParam);
+    }
+
+    @PostMapping("/login")
+    @ApiOperation("密码登录")
+    public R login(@Validated @RequestBody LoginBindCompanyParam param) {
+
+        // 密码校验
+        if (!PatternUtils.checkPassword(param.getPassword())) {
+            return R.error("密码格式不正确,需包含字母、数字和特殊字符,长度为 8-20位");
+        }
+
+        try {
+
+            //判断用户基本规则
+            CompanyUser companyUser = userService.selectUserByUserName(param.getAccount());
+            if (companyUser == null) {
+                return R.error("工号不存在");
+            }
+            if (companyUser.getStatus().equals("1")) {
+                return R.error("用户已禁用");
+            }
+            if (!SecurityUtils.matchesPassword(param.getPassword(), companyUser.getPassword())) {
+                return R.error("密码错误");
+            }
+            if (companyUser.getIsAudit() == 0) {
+                return R.error("用户未审核");
+            }
+
+            Company company = companyService.selectCompanyById(companyUser.getCompanyId());
+            if (company == null || company.getStatus() == 0 || company.getIsDel() == 1) {
+                throw new BaseException("此用户所属公司不存在或已停用");
+            }
+
+            return R.ok("验证成功");
+        } catch (Exception e) {
+            return R.error("登录异常:"+e.getMessage());
+        }
+    }
+
 }

+ 70 - 0
fs-qwhook-sop/src/main/java/com/fs/app/controller/QwUserController.java

@@ -1,9 +1,21 @@
 package com.fs.app.controller;
 
+import com.fs.app.params.LoginBindCompanyParam;
 import com.fs.common.BeanCopyUtils;
+import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.R;
+import com.fs.common.enums.BusinessType;
 import com.fs.common.exception.CustomException;
+import com.fs.common.exception.base.BaseException;
+import com.fs.common.utils.PatternUtils;
+import com.fs.common.utils.SecurityUtils;
+import com.fs.company.domain.Company;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.param.CompanyUserCodeParam;
+import com.fs.company.service.ICompanyPostService;
+import com.fs.company.service.ICompanyService;
+import com.fs.company.service.ICompanyUserService;
 import com.fs.qw.domain.QwExternalContactInfo;
 import com.fs.qw.domain.QwTagGroup;
 import com.fs.qw.param.ExternalContactDetailsParam;
@@ -27,6 +39,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
@@ -51,6 +64,18 @@ public class QwUserController extends BaseController {
     @Autowired
     private ISopUserLogsInfoService iSopUserLogsInfoService;
 
+    @Autowired
+    private ICompanyUserService companyUserService;
+
+    @Autowired
+    ICompanyUserService userService;
+
+    @Autowired
+    private ICompanyService companyService;
+
+    @Autowired
+    ICompanyPostService postService;
+
     @GetMapping("/details")
     @ApiOperation("会员看课详情")
     public R getUserDetails(@ApiParam(value = "外部联系人id", required = true) @RequestParam Long contactId,
@@ -150,5 +175,50 @@ public class QwUserController extends BaseController {
         return R.error();
     }
 
+    /**
+     * 注册或者绑定销售
+     */
+    @PostMapping("/registerCompany")
+    @Log(title = "注册或者绑定销售", businessType = BusinessType.INSERT)
+    public R registerCompany(@RequestBody CompanyUserCodeParam userCodeParam) {
+        return companyUserService.registerCompany(userCodeParam);
+    }
+
+    @PostMapping("/login")
+    @ApiOperation("密码登录")
+    public R login(@Validated @RequestBody LoginBindCompanyParam param) {
+
+        // 密码校验
+        if (!PatternUtils.checkPassword(param.getPassword())) {
+            return R.error("密码格式不正确,需包含字母、数字和特殊字符,长度为 8-20位");
+        }
+
+        try {
+
+            //判断用户基本规则
+            CompanyUser companyUser = userService.selectUserByUserName(param.getAccount());
+            if (companyUser == null) {
+                return R.error("工号不存在");
+            }
+            if (companyUser.getStatus().equals("1")) {
+                return R.error("用户已禁用");
+            }
+            if (!SecurityUtils.matchesPassword(param.getPassword(), companyUser.getPassword())) {
+                return R.error("密码错误");
+            }
+            if (companyUser.getIsAudit() == 0) {
+                return R.error("用户未审核");
+            }
+
+            Company company = companyService.selectCompanyById(companyUser.getCompanyId());
+            if (company == null || company.getStatus() == 0 || company.getIsDel() == 1) {
+                throw new BaseException("此用户所属公司不存在或已停用");
+            }
+
+            return R.ok("验证成功");
+        } catch (Exception e) {
+            return R.error("登录异常:"+e.getMessage());
+        }
+    }
 
 }

+ 16 - 0
fs-qwhook-sop/src/main/java/com/fs/app/params/LoginBindCompanyParam.java

@@ -0,0 +1,16 @@
+package com.fs.app.params;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class LoginBindCompanyParam {
+    @NotBlank(message = "请填写帐号")
+    private String account;
+    @NotBlank(message = "请填写密码")
+    private String password;
+}

+ 8 - 7
fs-qwhook-sop/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,18 +116,18 @@ 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();
     }

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

+ 3 - 2
fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java

@@ -317,11 +317,12 @@ public class CompanyUserServiceImpl implements ICompanyUserService
             user.setUserName(userCodeParam.getUserName());
             user.setSex(userCodeParam.getSex());
             user.setStatus("1");
-            user.setDept(userCodeParam.getDept());
+            user.setDeptId(userCodeParam.getDeptId());
+            user.setPhonenumber(userCodeParam.getPhonenumber());
             user.setRoleIds(userCodeParam.getRoleIds());
             user.setAddressId(userCodeParam.getAddressId());
             user.setCompanyId(userCodeParam.getCompanyId());
-            user.setCreateBy(userCodeParam.getQwUserId());
+            user.setCreateBy(userCodeParam.getQwUserIdByStr());
             user.setPassword(SecurityUtils.encryptPassword(userCodeParam.getPassword()));
             user.setCreateTime(new Date());
             user.setUserType("01");//一般用户

+ 8 - 8
fs-service/src/main/java/com/fs/course/service/IFsCourseProductOrderService.java

@@ -16,14 +16,14 @@ import com.fs.his.param.FsCourseProductOrderRefundParam;
 
 /**
  * 拍单商品订单Service接口
- * 
+ *
  * @author fs
  * @date 2025-07-28
  */
 public interface IFsCourseProductOrderService extends IService<FsCourseProductOrder>{
     /**
      * 查询拍单商品订单
-     * 
+     *
      * @param courseOrderId 拍单商品订单主键
      * @return 拍单商品订单
      */
@@ -31,7 +31,7 @@ public interface IFsCourseProductOrderService extends IService<FsCourseProductOr
 
     /**
      * 查询拍单商品订单列表
-     * 
+     *
      * @param param 拍单商品订单
      * @return 拍单商品订单集合
      */
@@ -39,7 +39,7 @@ public interface IFsCourseProductOrderService extends IService<FsCourseProductOr
 
     /**
      * 新增拍单商品订单
-     * 
+     *
      * @param fsCourseProductOrder 拍单商品订单
      * @return 结果
      */
@@ -47,7 +47,7 @@ public interface IFsCourseProductOrderService extends IService<FsCourseProductOr
 
     /**
      * 修改拍单商品订单
-     * 
+     *
      * @param fsCourseProductOrder 拍单商品订单
      * @return 结果
      */
@@ -55,7 +55,7 @@ public interface IFsCourseProductOrderService extends IService<FsCourseProductOr
 
     /**
      * 批量删除拍单商品订单
-     * 
+     *
      * @param courseOrderIds 需要删除的拍单商品订单主键集合
      * @return 结果
      */
@@ -63,7 +63,7 @@ public interface IFsCourseProductOrderService extends IService<FsCourseProductOr
 
     /**
      * 删除拍单商品订单信息
-     * 
+     *
      * @param courseOrderId 拍单商品订单主键
      * @return 结果
      */
@@ -79,7 +79,7 @@ public interface IFsCourseProductOrderService extends IService<FsCourseProductOr
 
     R payment(FsCourseProductOrderDoPayParam param);
 
-    R  payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type);
+    R  payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo);
 
     R refund(FsCourseProductOrderRefundParam param);
 

+ 1 - 1
fs-service/src/main/java/com/fs/course/service/IFsUserCourseOrderService.java

@@ -73,7 +73,7 @@ public interface IFsUserCourseOrderService
 
     R payment(FsUserCourseOrderDoPayParam param);
 
-    R  payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type);
+    R  payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo);
 
     R computeOrder(FsUserCourseOrderComputeParam param);
 

+ 1 - 1
fs-service/src/main/java/com/fs/course/service/IFsUserVipOrderService.java

@@ -75,7 +75,7 @@ public interface IFsUserVipOrderService
 
     R payment(FsUserVipOrderPayUParam param);
 
-    R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type);
+    R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo);
 
     R aliPayment(FsUserVipOrderPayUParam param);
 }

+ 10 - 8
fs-service/src/main/java/com/fs/course/service/impl/FsCourseProductOrderServiceImpl.java

@@ -76,7 +76,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 /**
  * 拍单商品订单Service业务层处理
- * 
+ *
  * @author fs
  * @date 2025-07-28
  */
@@ -131,7 +131,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
     /**
      * 查询拍单商品订单
-     * 
+     *
      * @param courseOrderId 拍单商品订单主键
      * @return 拍单商品订单
      */
@@ -143,7 +143,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
     /**
      * 查询拍单商品订单列表
-     * 
+     *
      * @param param 拍单商品订单
      * @return 拍单商品订单
      */
@@ -171,7 +171,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
     /**
      * 新增拍单商品订单
-     * 
+     *
      * @param fsCourseProductOrder 拍单商品订单
      * @return 结果
      */
@@ -184,7 +184,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
     /**
      * 修改拍单商品订单
-     * 
+     *
      * @param fsCourseProductOrder 拍单商品订单
      * @return 结果
      */
@@ -197,7 +197,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
     /**
      * 批量删除拍单商品订单
-     * 
+     *
      * @param courseOrderIds 需要删除的拍单商品订单主键
      * @return 结果
      */
@@ -209,7 +209,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
 
     /**
      * 删除拍单商品订单信息
-     * 
+     *
      * @param courseOrderId 拍单商品订单主键
      * @return 结果
      */
@@ -445,7 +445,7 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
     }
 
     @Override
-    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, Integer type) {
+    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, Integer type,String bankTransactionId,String bankSerialNo){
         logger.info("进入拍商品订单支付回调 orderSn: {}, payCode: {}, tradeNo: {}, payType: {}, type: {}",
                 orderSn, payCode, tradeNo, payType, type);
         FsCourseProductOrder order = null;
@@ -458,6 +458,8 @@ public class FsCourseProductOrderServiceImpl extends ServiceImpl<FsCourseProduct
                     paymentMap.setStatus(1);
                     paymentMap.setPayTime(new Date());
                     paymentMap.setTradeNo(tradeNo);
+                    paymentMap.setBankSerialNo(bankSerialNo);
+                    paymentMap.setBankTransactionId(bankTransactionId);
                     if(payType.equals(PayType.WECHAT_MINI_PROGRAM_PAYMENT.getCode())){
                         paymentMap.setPayTypeCode(PayType.WECHAT_MINI_PROGRAM_PAYMENT.name());
                     }

+ 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();

+ 5 - 3
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseOrderServiceImpl.java

@@ -390,7 +390,7 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
 
         if(user!=null&& StringUtils.isNotEmpty(openId)) {
             if (order.getPayMoney().compareTo(new BigDecimal(0)) == 0) {
-                this.payConfirm(order.getOrderCode(), "", "", "", 2);
+                this.payConfirm(order.getOrderCode(), "", "", "", 2,null,null);
                 return R.ok().put("isPay", 1);
             } else {
                 String payCode =  OrderCodeUtils.getOrderSn();
@@ -584,7 +584,7 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
                 }
             }
             else{
-                this.payConfirm(order.getOrderCode(),"","","",2);
+                this.payConfirm(order.getOrderCode(),"","","",2,null,null);
                 return R.ok().put("isPay",1);
             }
         }
@@ -596,7 +596,7 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
 
     @Override
     @Transactional
-    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, Integer type) {
+    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, Integer type,String bankTransactionId,String bankSerialNo){
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
         try {
             FsUserCourseOrder order=null;
@@ -609,6 +609,8 @@ public class FsUserCourseOrderServiceImpl implements IFsUserCourseOrderService
                         paymentMap.setStatus(1);
                         paymentMap.setPayTime(new Date());
                         paymentMap.setTradeNo(tradeNo);
+                        paymentMap.setBankSerialNo(bankSerialNo);
+                        paymentMap.setBankTransactionId(bankTransactionId);
                         if(payType.equals(PayType.WECHAT_MINI_PROGRAM_PAYMENT.getCode())){
                             paymentMap.setPayTypeCode(PayType.WECHAT_MINI_PROGRAM_PAYMENT.name());
                         }

+ 5 - 3
fs-service/src/main/java/com/fs/course/service/impl/FsUserVipOrderServiceImpl.java

@@ -249,7 +249,7 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
 
         if(user!=null&& StringUtils.isNotEmpty(openId)) {
             if (order.getPayMoney().compareTo(new BigDecimal(0)) == 0) {
-                this.payConfirm(order.getOrderCode(), "", "", "", 2);
+                this.payConfirm(order.getOrderCode(), "", "", "", 2,null,null);
                 return R.ok().put("isPay", 1);
             } else {
                 String payCode =  OrderCodeUtils.getOrderSn();
@@ -434,7 +434,7 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
                 }
             }
             else{
-                this.payConfirm(order.getOrderCode(),"","","",2);
+                this.payConfirm(order.getOrderCode(),"","","",2,null,null);
                 return R.ok().put("isPay",1);
             }
         }
@@ -446,7 +446,7 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
 
     @Override
     @Transactional
-    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, Integer type) {
+    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, Integer type,String bankTransactionId,String bankSerialNo){
         Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
         try {
             FsUserVipOrder order=null;
@@ -459,6 +459,8 @@ public class FsUserVipOrderServiceImpl implements IFsUserVipOrderService
                         paymentMap.setStatus(1);
                         paymentMap.setPayTime(new Date());
                         paymentMap.setTradeNo(tradeNo);
+                        paymentMap.setBankSerialNo(bankSerialNo);
+                        paymentMap.setBankTransactionId(bankTransactionId);
                         if(payType.equals(PayType.WECHAT_MINI_PROGRAM_PAYMENT.getCode())){
                             paymentMap.setPayTypeCode(PayType.WECHAT_MINI_PROGRAM_PAYMENT.name());
                         }

+ 1 - 1
fs-service/src/main/java/com/fs/his/mapper/FsStorePaymentMapper.java

@@ -175,7 +175,7 @@ public interface FsStorePaymentMapper
     @Select("select * from fs_store_payment where business_type=#{type} and  business_id=#{businessId} and (status=1 or starus=-1)")
     List<FsStorePayment> selectFsStorePaymentByPayOrRefund(int i, Long orderId);
     @Select({"<script> " +
-            " SELECT sp.*,u.nick_name,u.phone,s.store_name,c.company_name,cu.nick_name as companyUserName,fso.delivery_name,fso.package_name,fso.package_second_name FROM fs_store_payment sp " +
+            " SELECT CONCAT('package-', sp.business_code) AS business_code,sp.*,u.nick_name,u.phone,s.store_name,c.company_name,cu.nick_name as companyUserName,fso.delivery_name,fso.package_name,fso.package_second_name FROM fs_store_payment sp " +
             " LEFT JOIN  fs_user u ON u.user_id=sp.user_id " +
             " LEFT JOIN fs_store s ON s.store_id=sp.store_id " +
             " left join fs_store_order fso on fso.order_code = sp.business_code " +

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/IFsInquiryOrderService.java

@@ -75,7 +75,7 @@ public interface IFsInquiryOrderService
 
     R createOrder(FsInquiryOrderCreateParam param);
 
-    R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type);
+    R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo);
 
     R confirmOrder(FsInquiryOrderConfirmParam param);
 

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/IFsIntegralOrderService.java

@@ -99,5 +99,5 @@ public interface IFsIntegralOrderService
     /**
      * 支付回调
      */
-    R payConfirm(String orderSn, String payCode, String tradeNo, String payType, int type);
+    R payConfirm(String orderSn, String payCode, String tradeNo, String payType, int type,String bankTransactionId,String bankSerialNo);
 }

+ 2 - 1
fs-service/src/main/java/com/fs/his/service/IFsPackageOrderService.java

@@ -83,7 +83,8 @@ public interface IFsPackageOrderService
 
     R payOrder(FsPackageOrderPayParam param);
 
-    R  payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type);
+//    R  payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type);
+    R  payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo);
 
     List<FsPackageOrderListUVO> selectFsPackageOrderListUVO(FsPackageOrderListUParam param);
 

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/IFsStoreOrderService.java

@@ -107,7 +107,7 @@ public interface IFsStoreOrderService
 
     R createOrderByPackageOrder(FsPackageOrder packageOrder);
 
-    R payConfirm(String orderCode,String payCode, String tradeNo,String payType,Integer type);
+    R payConfirm(String orderCode,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo);
 
     List<FsStoreOrderExcelVO> selectFsStoreOrderExcelListVO(FsStoreOrderParam fsStoreOrder);
 

+ 1 - 5
fs-service/src/main/java/com/fs/his/service/impl/FsExportTaskServiceImpl.java

@@ -15,10 +15,7 @@ import com.fs.his.param.FsStoreOrderParam;
 import com.fs.his.param.FsStorePaymentParam;
 import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.utils.PhoneUtil;
-import com.fs.his.vo.FsStoreOrderErpExportVO;
-import com.fs.his.vo.FsStoreOrderExcelVO;
-import com.fs.his.vo.FsStoreOrderExportVO;
-import com.fs.his.vo.FsStorePaymentExcelVO;
+import com.fs.his.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -211,7 +208,6 @@ public class FsExportTaskServiceImpl implements IFsExportTaskService
             task.setStatus(1);
             task.setFileUrl(result.get("msg").toString());
             fsExportTaskMapper.updateFsExportTask(task);
-
     }
 
     @Override

+ 4 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderServiceImpl.java

@@ -730,7 +730,7 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
 
     @Override
     @Transactional
-    public R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type) {
+    public R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo) {
         try {
             FsInquiryOrder order;
             if(type.equals(1)){
@@ -742,6 +742,8 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
                         paymentMap.setStatus(1);
                         paymentMap.setPayTime(new Date());
                         paymentMap.setTradeNo(tradeNo);
+                        paymentMap.setBankSerialNo(bankSerialNo);
+                        paymentMap.setBankTransactionId(bankTransactionId);
                         if(payType.equals(PayType.WECHAT_MINI_PROGRAM_PAYMENT.getCode())){
                             paymentMap.setPayTypeCode(PayType.WECHAT_MINI_PROGRAM_PAYMENT.name());
                         }
@@ -1642,7 +1644,7 @@ public class FsInquiryOrderServiceImpl implements IFsInquiryOrderService
             fsPackageOrder.setOrderId(packageOrder.getOrderId());
             fsPackageOrder.setInquiryOrderId(order.getOrderId());
             fsPackageOrderMapper.updateFsPackageOrder(fsPackageOrder);
-            this.payConfirm(packageOrder.getOrderSn(),"","","",2);
+            this.payConfirm(packageOrder.getOrderSn(),"","","",2,null,null);
             return R.ok();
         }
         else{

+ 3 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsIntegralOrderServiceImpl.java

@@ -519,7 +519,7 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, int type) {
+    public R payConfirm(String orderSn, String payCode, String tradeNo, String payType, int type,String bankTransactionId,String bankSerialNo){
         log.info("进入积分商城订单支付回调 orderSn: {}, payCode: {}, tradeNo: {}, payType: {}, type: {}",
                 orderSn, payCode, tradeNo, payType, type);
         FsIntegralOrder order = null;
@@ -536,6 +536,8 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
                 paymentMap.setStatus(1);
                 paymentMap.setPayTime(new Date());
                 paymentMap.setTradeNo(tradeNo);
+                paymentMap.setBankSerialNo(bankSerialNo);
+                paymentMap.setBankTransactionId(bankTransactionId);
                 if(payType.equals(PayType.WECHAT_MINI_PROGRAM_PAYMENT.getCode())){
                     paymentMap.setPayTypeCode(PayType.WECHAT_MINI_PROGRAM_PAYMENT.name());
                 }

+ 8 - 5
fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java

@@ -643,7 +643,8 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
 
     @Override
     @Transactional
-    public R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type) {
+//    public R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type) {
+    public R payConfirm(String orderSn,String payCode, String tradeNo,String payType,Integer type,String bankTransactionId,String bankSerialNo) {
 //        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
 //        try {
         logger.info("进入订单");
@@ -657,6 +658,8 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                     paymentMap.setStatus(1);
                     paymentMap.setPayTime(new Date());
                     paymentMap.setTradeNo(tradeNo);
+                    paymentMap.setBankSerialNo(bankSerialNo);
+                    paymentMap.setBankTransactionId(bankTransactionId);
                     if(payType.equals(PayType.WECHAT_MINI_PROGRAM_PAYMENT.getCode())){
                         paymentMap.setPayTypeCode(PayType.WECHAT_MINI_PROGRAM_PAYMENT.name());
                     }
@@ -1028,7 +1031,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                 }
             }
             else{
-                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2);
+                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2,null,null);
                 return R.ok().put("isPay",1);
             }
         }
@@ -1164,7 +1167,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                 }
             }
             else{
-                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2);
+                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2,null,null);
                 return R.ok().put("isPay",1);
             }
         }
@@ -1251,7 +1254,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                 }
             }
             else{
-                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2);
+                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2,null,null);
                 return R.ok().put("isPay",1);
             }
         }
@@ -1340,7 +1343,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                 }
             }
             else{
-                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2);
+                this.payConfirm(fsPackageOrder.getOrderSn(),"","","",2,null,null);
                 return R.ok().put("isPay",1);
             }
         }

+ 5 - 3
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -1416,7 +1416,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
 
     @Override
     @Transactional(rollbackFor = Throwable.class, propagation = Propagation.REQUIRED)
-    public R payConfirm(String orderCode, String payCode, String tradeNo, String payType, Integer type) {
+    public R payConfirm(String orderCode, String payCode, String tradeNo, String payType, Integer type,String bankTransactionId,String bankSerialNo){
         try {
             FsStoreOrder order = null;
             if (type.equals(1)) {
@@ -1430,6 +1430,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                         paymentMap.setStatus(1);
                         paymentMap.setPayTime(new Date());
                         paymentMap.setTradeNo(tradeNo);
+                        paymentMap.setBankSerialNo(bankSerialNo);
+                        paymentMap.setBankTransactionId(bankTransactionId);
                         if (payType.equals(PayType.WECHAT_MINI_PROGRAM_PAYMENT.getCode())) {
                             paymentMap.setPayTypeCode(PayType.WECHAT_MINI_PROGRAM_PAYMENT.name());
                         } else if (payType.equals(PayType.ALIPAY_BARCODE_PAYMENT.getCode())) {
@@ -2692,7 +2694,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         if (user != null && StringUtils.isNotEmpty(openId)) {
 
             if (order.getPayMoney().compareTo(new BigDecimal(0)) == 0) {
-                this.payConfirm(order.getOrderCode(), "", "", "", 2);
+                this.payConfirm(order.getOrderCode(), "", "", "", 2,null,null);
                 return R.ok().put("data", param.getOrderId()).put("isPay", "1");
             } else {
                 String payCode = OrderCodeUtils.getOrderSn();
@@ -2830,7 +2832,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
 
             if (order.getPayMoney().compareTo(new BigDecimal(0)) == 0) {
                 IFsStoreOrderService fsStoreOrderService1 = (IFsStoreOrderService) AopContext.currentProxy();
-                fsStoreOrderService1.payConfirm(order.getOrderCode(), "", "", "", 2);
+                fsStoreOrderService1.payConfirm(order.getOrderCode(), "", "", "", 2,null,null);
                 return R.ok().put("data", param.getOrderId()).put("isPay", "1");
             } else {
                 //在线支付

+ 15 - 15
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -263,15 +263,15 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
                 QueryOrderResult body = result.getBody();
                 logger.info("手动回调内容:" + body);
                 if (fsStorePayment.getBusinessType() == 1) {
-                    inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1);
+                    inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
                 } else if (fsStorePayment.getBusinessType() == 2) {
-                    storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1);
+                    storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
                 } else if (fsStorePayment.getBusinessType() == 3) {
-                    packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1);
+                    packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), body.getPayType(), 1,null,null);
                 }else if (fsStorePayment.getBusinessType() == 4) {
-                    courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1);
+                    courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
                 }else if (fsStorePayment.getBusinessType() == 5) {
-                    vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1);
+                    vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
                 }
             }
         }
@@ -285,15 +285,15 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
                     logger.info("手动查询内容:" + paymentId + ":" + orderResult);
                     if (orderResult.getStatus().equals("100")) {
                         if (fsStorePayment.getBusinessType() == 1) {
-                            inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1);
+                            inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
                         } else if (fsStorePayment.getBusinessType() == 2) {
-                            storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1);
+                            storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
                         } else if (fsStorePayment.getBusinessType() == 3) {
-                            packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1);
+                            packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,null,null);
                         }else if (fsStorePayment.getBusinessType() == 4) {
-                            courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1);
+                            courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
                         }else if (fsStorePayment.getBusinessType() == 5) {
-                            vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1);
+                            vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,null,null);
                         }
                     }
                 }
@@ -314,15 +314,15 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
                 if (queryOrderResult.getTrans_stat().equals("S")) {
                     logger.info("手动查询内容:" + paymentId + ":" + request);
                         if (fsStorePayment.getBusinessType() == 1) {
-                            inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1);
+                            inquiryOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,queryOrderResult.getOut_trans_id(),queryOrderResult.getParty_order_id());
                         } else if (fsStorePayment.getBusinessType() == 2) {
-                            storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1);
+                            storeOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,queryOrderResult.getOut_trans_id(),queryOrderResult.getParty_order_id());
                         } else if (fsStorePayment.getBusinessType() == 3) {
-                            packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1);
+                            packageOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "14", 1,queryOrderResult.getOut_trans_id(),queryOrderResult.getParty_order_id());
                         }  else if (fsStorePayment.getBusinessType() == 4) {
-                            courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1);
+                            courseOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,queryOrderResult.getOut_trans_id(),queryOrderResult.getParty_order_id());
                         }else if (fsStorePayment.getBusinessType() == 5) {
-                            vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1);
+                            vipOrderService.payConfirm("", fsStorePayment.getPayCode(), fsStorePayment.getTradeNo(), "", 1,queryOrderResult.getOut_trans_id(),queryOrderResult.getParty_order_id());
                         }
 
                 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/vo/FsDoctorArticleUVO.java

@@ -9,6 +9,8 @@ import java.util.Date;
 
 @Data
 public class FsDoctorArticleUVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
 
     /** ID */
     private Long articleId;

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

+ 2 - 0
fs-service/src/main/java/com/fs/qw/domain/QwCompany.java

@@ -79,4 +79,6 @@ public class QwCompany extends BaseEntity
     private String msgPrivateKey;
 
     private String miniAppId;
+
+    private Integer companyServerNum;
 }

+ 9 - 2
fs-service/src/main/java/com/fs/qw/service/impl/QwCompanyServiceImpl.java

@@ -81,7 +81,8 @@ public class QwCompanyServiceImpl implements IQwCompanyService
     public int insertQwCompany(QwCompany qwCompany)
     {
         qwCompany.setCreateTime(DateUtils.getNowDate());
-        return qwCompanyMapper.insertQwCompany(qwCompany);
+        int i = qwCompanyMapper.insertQwCompany(qwCompany);
+        return i;
     }
 
     /**
@@ -94,7 +95,13 @@ public class QwCompanyServiceImpl implements IQwCompanyService
     public int updateQwCompany(QwCompany qwCompany)
     {
         qwCompany.setUpdateTime(DateUtils.getNowDate());
-        return qwCompanyMapper.updateQwCompany(qwCompany);
+        int i = qwCompanyMapper.updateQwCompany(qwCompany);
+
+        if (i>0){
+            redisCache.setCacheObject("qwCompany:"+qwCompany.getCorpId() ,JSON.toJSONString(qwCompany),1, TimeUnit.HOURS);
+        }
+
+        return i;
     }
 
     /**

+ 0 - 5
fs-service/src/main/java/com/fs/todo/mapper/FsTodoItemsMapper.java

@@ -17,7 +17,6 @@ public interface FsTodoItemsMapper {
     /**
      * 根据ID查询待办事项
      */
-    @Select("SELECT * FROM fs_todo_items WHERE id = #{id}")
     FsTodoItems selectById(@Param("id") Long id);
 
 
@@ -39,25 +38,21 @@ public interface FsTodoItemsMapper {
     /**
      * 查询所有待办事项
      */
-    @Select("SELECT * FROM fs_todo_items ORDER BY create_time DESC")
     List<FsTodoItems> selectAll();
 
     /**
      * 根据状态查询待办事项
      */
-    @Select("SELECT * FROM fs_todo_items WHERE status = #{status} ORDER BY create_time DESC")
     List<FsTodoItems> selectByStatus(@Param("status") Integer status);
 
     /**
      * 根据创建者ID查询待办事项
      */
-    @Select("SELECT * FROM fs_todo_items WHERE creator_id = #{creatorId} ORDER BY create_time DESC")
     List<FsTodoItems> selectByCreatorId(@Param("creatorId") Long creatorId);
 
     /**
      * 根据负责人ID查询待办事项
      */
-    @Select("SELECT * FROM fs_todo_items WHERE assignee_id = #{assigneeId} ORDER BY create_time DESC")
     List<FsTodoItems> selectByAssigneeId(@Param("assigneeId") Long assigneeId);
 
     /**

+ 92 - 0
fs-service/src/main/resources/application-config-druid-nmgyt.yml

@@ -0,0 +1,92 @@
+baidu:
+  token: 12313231232
+  back-domain: https://www.xxxx.com
+#配置
+logging:
+  level:
+    org.springframework.web: INFO
+    com.github.binarywang.demo.wx.cp: DEBUG
+    me.chanjar.weixin: DEBUG
+wx:
+  miniapp:
+    configs:
+      - appid:
+        secret:
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+      - appid:
+        secret:
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+  cp:
+    corpId: wwb2a1055fb6c9a7c2
+    appConfigs:
+      - agentId: 1000005
+        secret: ec7okROXJqkNafq66-L6aKNv0asTzQIG0CYrj3vyBbo
+        token: PPKOdAlCoMO
+        aesKey: PKvaxtpSv8NGpfTDm7VUHIK8Wok2ESyYX24qpXJAdMP
+  pay:
+    appId:  #微信公众号或者小程序等的appid
+    mchId:  #微信支付商户号
+    mchKey:  #微信支付商户密钥
+    subAppId:  #服务商模式下的子商户公众账号ID
+    subMchId:  #服务商模式下的子商户号
+    keyPath: c:\\cert\\apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
+    notifyUrl: https://userapp.his.runtzh.com/app/wxpay/wxPayNotify
+  mp:
+    useRedis: false
+    redisConfig:
+      host: 127.0.0.1
+      port: 6379
+      timeout: 2000
+    configs:
+      - appId: wx616d84b7356534e1  # 第一个公众号的appid
+        secret: 38ba67a4b748b96a797c3d2d5aa85087 # 公众号的appsecret
+        token: PPKOdAlCoMO # 接口配置里的Token值
+        aesKey: Eswa6VjwtVMCcw03qZy6fWllgrv5aytIA1SZPEU0kU2 # 接口配置里的EncodingAESKey值
+  open:
+    appId: wxda2eb168e5b09e56
+    secret: dde09b45d0f6d5b0925965b964b6ab48
+aifabu:  #爱链接
+  appKey: 7b471be905ab17e00f3b858c6710dd117601d008
+watch:
+  watchUrl: watch.ylrzcloud.com/prod-api
+  #  account: tcloud
+  #  password: mdf-m2h_6yw2$hq
+  account1: ccif #866655060138751
+  password1: cp-t5or_6xw7$mt
+  account2: tcloud #rt500台
+  password2: mdf-m2h_6yw2$hq
+  account3: whr
+  password3: v9xsKuqn_$d2y
+
+fs :
+  commonApi: http://172.16.0.9:7771
+  h5CommonApi: http://192.168.0.18:7771
+nuonuo:
+  key: 10924508
+  secret: A2EB20764D304D16
+
+# 存储捅配置
+tencent_cloud_config:
+  secret_id: AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT
+  secret_key: u5SuS80342xzx8FRBukza9lVNHKNMSaB
+  bucket: nmgyt-1323137866
+  app_id: 1323137866
+  region: ap-chongqing
+  proxy: nmgyt
+cloud_host:
+  company_name: 内蒙古一贴
+  projectCode: NMGYT
+headerImg:
+  imgUrl: https
+ipad:
+  ipadUrl: http://qwipad.nmghysmytdyf.com
+  aiApi: http://127.0.0.1:3000/api
+wx_miniapp_temp:
+  pay_order_temp_id: V
+  inquiry_temp_id: 9
+
+

+ 155 - 0
fs-service/src/main/resources/application-druid-nmgyt.yml

@@ -0,0 +1,155 @@
+# 数据源配置
+spring:
+    profiles:
+        include: config-druid-nmgyt,common
+    # redis 配置
+    redis:
+        # 地址
+        host: 172.16.0.6
+        # 端口,默认为6379
+        port: 6379
+        # 数据库索引
+        database: 0
+        # 密码
+        password: Ylrz_c123232014^$
+        # 连接超时时间
+        timeout: 20s
+        lettuce:
+            pool:
+                # 连接池中的最小空闲连接
+                min-idle: 0
+                # 连接池中的最大空闲连接
+                max-idle: 8
+                # 连接池的最大数据库连接数
+                max-active: 8
+                # #连接池最大阻塞等待时间(使用负值表示没有限制)
+                max-wait: -1ms
+    datasource:
+        #        clickhouse:
+        #            type: com.alibaba.druid.pool.DruidDataSource
+        #            driverClassName: com.clickhouse.jdbc.ClickHouseDriver
+        #            url: jdbc:clickhouse://cc-2vc8zzo26w0l7m2l6.public.clickhouse.ads.aliyuncs.com/sop?compress=0&use_server_time_zone=true&use_client_time_zone=false&timezone=Asia/Shanghai
+        #            username: rt_2024
+        #            password: Yzx_19860213
+        #            initialSize: 10
+        #            maxActive: 100
+        #            minIdle: 10
+        #            maxWait: 6000
+        mysql:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://172.16.0.11:3306/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Ylrz_c123232014^$
+                # 从库数据源
+                slave:
+                    # 从数据源开关/默认关闭
+                    enabled: false
+                    url:
+                    username:
+                    password:
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+        sop:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://172.16.0.11:3306/sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Ylrz_c123232014^$
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+rocketmq:
+    name-server: rmq-1243b25nj.rocketmq.gz.public.tencenttdmq.com:8080 # RocketMQ NameServer 地址
+    producer:
+        group: my-producer-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+    consumer:
+        group: test-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+openIM:
+    secret: openIM123
+    userID: imAdmin
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true

+ 7 - 1
fs-service/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml

@@ -265,7 +265,8 @@
         fcpd.id,
         if(ccut.start_date_time is null, fcpd.start_date_time, ccut.start_date_time) as startDateTime,
         if(ccut.end_date_time is null, fcpd.end_date_time, ccut.end_date_time) as endDateTime,
-        course.project as projectId
+        course.project as projectId,
+        fcp.max_view_num as maxViewNum
         FROM `fs_user_course_video` video
         left join fs_user_course_period_days fcpd on fcpd.video_id = video.video_id
         left join fs_user_course_period fcp on fcp.period_id = fcpd.period_id
@@ -282,6 +283,8 @@
         <if test="keyword != null and keyword !='' ">
             AND video.title LIKE concat('%',#{keyword},'%')
         </if>
+        <!-- 营销提前查看天数逻辑 -->
+        AND DATE_SUB(fcpd.day_date, INTERVAL fcp.max_view_num DAY) &lt;= now()
         order by video.course_sort
     </select>
 
@@ -335,6 +338,9 @@
         <if test="params.dayDate != null">
             and fcpd.day_date = #{params.dayDate}
         </if>
+        <if test="params.keyword != null and params.keyword !='' ">
+            AND video.title LIKE concat('%',#{params.keyword},'%')
+        </if>
         and (
         (fcpd.start_date_time &lt;=  CONCAT( CURDATE(), ' 23:59:59' ) and fcpd.end_date_time >= CONCAT( CURDATE(), ' 00:00:00' ))
         or (ccut.start_date_time &lt;=  CONCAT( CURDATE(), ' 23:59:59' ) and ccut.end_date_time >= CONCAT( CURDATE(), ' 00:00:00' ))

+ 2 - 1
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -1653,7 +1653,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN company_user ON company_user.user_id = ucu.company_user_id
         LEFT JOIN company on company.company_id = company_user.company_id
         <where>
-            1 = 1 and u.nickname is not null
+            1 = 1
+            AND (u.nickname IS NOT NULL or u.nick_name IS NOT NULL)
             <if test = "maps.nickname != null and  maps.nickname !='' " >
                 AND u.nickname LIKE CONCAT("%",#{maps.nickname},"%")
             </if >

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

+ 7 - 7
fs-user-app/src/main/java/com/fs/app/controller/HuifuPayController.java

@@ -44,25 +44,25 @@ public class HuifuPayController {
             String[] orderId=huiFuResult.getReq_seq_id().split("-");
             switch (orderId[0]){
                 case "inquiry":
-                    inquiryOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1);
+                    inquiryOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     break;
                 case "store":
-                    storeOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1);
+                    storeOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     break;
                 case "package":
-                    packageOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1);
+                    packageOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     break;
                 case "course":
-                    courseOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1);
+                    courseOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     break;
                 case "appvip":
-                    vipOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1);
+                    vipOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     break;
                 case "integral":
-                    integralOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1);
+                    integralOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     break;
                 case "product":
-                    courseProductOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1);
+                    courseProductOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     break;
             }
         }

+ 2 - 2
fs-user-app/src/main/java/com/fs/app/controller/InquiryOrderController.java

@@ -290,7 +290,7 @@ public class InquiryOrderController extends  AppBaseController {
         }
 
         if(order.getPayMoney().compareTo(new BigDecimal(0))==0){
-            inquiryOrderService.payConfirm(order.getOrderSn(),"","","",2);
+            inquiryOrderService.payConfirm(order.getOrderSn(),"","","",2,null,null);
             return R.ok().put("isPay",1);
         }
         else{
@@ -424,7 +424,7 @@ public class InquiryOrderController extends  AppBaseController {
         FsUser user=userService.selectFsUserByUserId(Long.parseLong(getUserId()));
 
         if(order.getPayMoney().compareTo(new BigDecimal(0))==0){
-            inquiryOrderService.payConfirm(order.getOrderSn(),"","","",2);
+            inquiryOrderService.payConfirm(order.getOrderSn(),"","","",2,null,null);
             return R.ok().put("isPay",1);
         }
         else{

+ 6 - 6
fs-user-app/src/main/java/com/fs/app/controller/TzPayController.java

@@ -57,22 +57,22 @@ public class TzPayController extends BaseController
         logger.info("台州银行支付回调:"+tzBankOrderDecrypt.getOrderFlowNo()+":"+tzBankOrderDecrypt);
         if(tzBankOrderDecrypt.getStatus().equals("90")){
             if(tzBankOrderDecrypt.getOrderNo().indexOf("inquiry")>-1){
-                inquiryOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(7),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1);
+                inquiryOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(7),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1,null,null);
             }
             else if(tzBankOrderDecrypt.getOrderNo().indexOf("store")>-1){
-                storeOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(5),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1);
+                storeOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(5),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1,null,null);
             }
             else if(tzBankOrderDecrypt.getOrderNo().indexOf("package")>-1){
-                packageOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(7),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1);
+                packageOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(7),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1,null,null);
             }
             else if(tzBankOrderDecrypt.getOrderNo().indexOf("course")>-1){
-                courseOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(6),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1);
+                courseOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(6),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1,null,null);
             }
             else if(tzBankOrderDecrypt.getOrderNo().indexOf("appvip")>-1){
-                userVipOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(6),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1);
+                userVipOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(6),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1,null,null);
             }
             else if (tzBankOrderDecrypt.getOrderNo().indexOf("integral")>-1) {
-                integralOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(8),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1);
+                integralOrderService.payConfirm("",tzBankOrderDecrypt.getOrderNo().substring(8),tzBankOrderDecrypt.getOrderFlowNo(),tzBankOrderDecrypt.getPayType(),1,null,null);
             }
         }
         return decrypt;

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/UserVipController.java

@@ -95,7 +95,7 @@ public class UserVipController extends  AppBaseController{
     public R test(@RequestParam String payCode,@RequestParam String tradeNo)
     {
         System.out.println("payCode:"+payCode);
-        return fsUserVipOrderService.payConfirm("",payCode,tradeNo,"",1);
+        return fsUserVipOrderService.payConfirm("",payCode,tradeNo,"",1,null,null);
     }
 
     @Login

+ 7 - 7
fs-user-app/src/main/java/com/fs/app/controller/WxPayController.java

@@ -110,20 +110,20 @@ public class WxPayController {
                 String[] orderId=outtradeno.split("-");
                 switch (orderId[0]){
                     case "inquiry":
-                        inquiryOrderService.payConfirm("",orderId[1],tradeNo,"",1);
+                        inquiryOrderService.payConfirm("",orderId[1],tradeNo,"",1,tradeNo,null);
                     case "store":
-                        storeOrderService.payConfirm("",orderId[1],tradeNo,"",1);
+                        storeOrderService.payConfirm("",orderId[1],tradeNo,"",1,tradeNo,null);
                     case "package":
-                        packageOrderService.payConfirm("",orderId[1],tradeNo,"",1);
+                        packageOrderService.payConfirm("",orderId[1],tradeNo,"",1,tradeNo,null);
                     case "course":
-                        courseOrderService.payConfirm("",orderId[1],tradeNo,"",1);
+                        courseOrderService.payConfirm("",orderId[1],tradeNo,"",1,tradeNo,null);
                     case "appvip":
-                        userVipOrderService.payConfirm("",orderId[1],tradeNo,"",1);
+                        userVipOrderService.payConfirm("",orderId[1],tradeNo,"",1,tradeNo,null);
                     case "integral":
-                        integralOrderService.payConfirm("",orderId[1],tradeNo,"",1);
+                        integralOrderService.payConfirm("",orderId[1],tradeNo,"",1,tradeNo,null);
                         break;
                     case "product":
-                        courseProductOrderService.payConfirm("",orderId[1],tradeNo,"",1);
+                        courseProductOrderService.payConfirm("",orderId[1],tradeNo,"",1,tradeNo,null);
                 }
                 return WxPayNotifyResponse.success("处理成功!");
             }else{

+ 6 - 6
fs-user-app/src/main/java/com/fs/app/controller/YbPayController.java

@@ -62,22 +62,22 @@ public class YbPayController extends BaseController
         String[] orderId=o.getLowOrderId().split("-");
         switch (orderId[0]){
             case "inquiry":
-                inquiryOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1);
+                inquiryOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1,null,null);
                 break;
             case "store":
-                storeOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1);
+                storeOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1,null,null);
                 break;
             case "package":
-                packageOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1);
+                packageOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1,null,null);
                 break;
             case "course":
-                courseOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1);
+                courseOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1,null,null);
                 break;
             case "appvip":
-                userVipOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1);
+                userVipOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1,null,null);
                 break;
             case "integral":
-                integralOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1);
+                integralOrderService.payConfirm("",orderId[1],o.getUpOrderId(),"",1,null,null);
                 break;
         }
         System.out.println(o);

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

+ 0 - 33
fs-user-app/src/test/java/com/fs/app/controller/medical/PhysicalExamReportControllerTest.java

@@ -1,33 +0,0 @@
-package com.fs.app.controller.medical;
-
-import com.alibaba.fastjson.JSON;
-import com.fs.FsUserAppApplication;
-import com.fs.medical.param.PhysicalExamReportCompareDto;
-import com.fs.medical.service.PhysicalExamReportService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = FsUserAppApplication.class)
-@RequiredArgsConstructor
-@Slf4j
-public class PhysicalExamReportControllerTest {
-
-    @Autowired
-    private PhysicalExamReportService physicalExamReportService;
-
-    @Test
-    public void compareReport() {
-        PhysicalExamReportCompareDto compareDto = new PhysicalExamReportCompareDto();
-        compareDto.setReport1(24L);
-        compareDto.setReport2(26L);
-        compareDto.setType(1);
-        Object result = physicalExamReportService.compareReport(compareDto);
-        log.info("对比结果: {}", JSON.toJSONString(result));
-    }
-}