Ver código fonte

Merge branch 'master' into bjcz_his_scrm

# Conflicts:
#	fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java
吴树波 1 dia atrás
pai
commit
a2672cb128
36 arquivos alterados com 367 adições e 163 exclusões
  1. 0 1
      fs-admin/src/main/java/com/fs/course/task/CompanyBalanceTask.java
  2. 15 13
      fs-admin/src/main/java/com/fs/crm/controller/CrmCustomerController.java
  3. 23 23
      fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderController.java
  4. 19 17
      fs-admin/src/main/java/com/fs/his/controller/FsUserController.java
  5. 27 27
      fs-admin/src/main/java/com/fs/task/SgTestController.java
  6. 0 2
      fs-admin/src/main/java/com/fs/task/SyncTuLinStudentInfoTask.java
  7. 26 7
      fs-admin/src/main/java/com/fs/web/controller/system/SysLoginController.java
  8. 10 1
      fs-company/src/main/java/com/fs/company/controller/qw/QwSopLogsController.java
  9. 2 2
      fs-company/src/main/java/com/fs/company/controller/store/FsStoreOrderController.java
  10. 3 0
      fs-service/src/main/java/com/fs/course/service/impl/BalanceRollbackErrorServiceImpl.java
  11. 10 7
      fs-service/src/main/java/com/fs/his/mapper/FsDfAccountMapper.java
  12. 2 0
      fs-service/src/main/java/com/fs/his/service/IFsDfAccountService.java
  13. 1 1
      fs-service/src/main/java/com/fs/his/service/IFsExportTaskService.java
  14. 12 7
      fs-service/src/main/java/com/fs/his/service/impl/FsDfAccountServiceImpl.java
  15. 9 9
      fs-service/src/main/java/com/fs/his/service/impl/FsExportTaskServiceImpl.java
  16. 12 3
      fs-service/src/main/java/com/fs/qw/service/impl/QwUserServiceImpl.java
  17. 7 0
      fs-service/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java
  18. 1 1
      fs-service/src/main/java/com/fs/system/service/ISysRoleService.java
  19. 17 4
      fs-service/src/main/java/com/fs/system/service/impl/SysRoleServiceImpl.java
  20. 17 0
      fs-service/src/main/java/com/fs/tulin/entity/PeriodInfo.java
  21. 9 1
      fs-service/src/main/java/com/fs/tulin/mapper/TulinInfoSyncLogMapper.java
  22. 30 19
      fs-service/src/main/java/com/fs/tulin/service/impl/TulinInfoSyncLogServiceImpl.java
  23. 6 6
      fs-service/src/main/resources/application-common.yml
  24. 6 0
      fs-service/src/main/resources/application-config-druid-hdt.yml
  25. 6 0
      fs-service/src/main/resources/application-config-druid-jnmy.yml
  26. 6 0
      fs-service/src/main/resources/application-config-myhk.yml
  27. 7 1
      fs-service/src/main/resources/application-config-zkzh.yml
  28. 4 0
      fs-service/src/main/resources/mapper/his/FsDfAccountMapper.xml
  29. 7 7
      fs-service/src/main/resources/mapper/his/FsStoreOrderMapper.xml
  30. 3 1
      fs-service/src/main/resources/mapper/his/FsUserMapper.xml
  31. 1 1
      fs-service/src/main/resources/mapper/system/SysRoleMapper.xml
  32. 15 0
      fs-service/src/main/resources/mapper/tulin/TulinInfoSyncLogMapper.xml
  33. 20 1
      fs-user-app/src/main/java/com/fs/app/controller/UserController.java
  34. 1 0
      fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserController.java
  35. 32 0
      fs-user-app/src/main/java/com/fs/app/controller/course/CourseQwController.java
  36. 1 1
      fs-user-app/src/main/java/com/fs/app/utils/JwtUtils.java

+ 0 - 1
fs-admin/src/main/java/com/fs/course/task/CompanyBalanceTask.java

@@ -49,7 +49,6 @@ public class CompanyBalanceTask {
      * @Author xgb
      * @Date 2025/10/22 11:52
      */
-    @EventListener(ApplicationReadyEvent.class)
     public void initCompanyBalance() {
         balanceRollbackErrorService.initCompanyBalance();
 

+ 15 - 13
fs-admin/src/main/java/com/fs/crm/controller/CrmCustomerController.java

@@ -151,14 +151,14 @@ public class CrmCustomerController extends BaseController
         crmCustomer.setIsLine(0);
         List<CrmCustomerListVO> list = crmCustomerService.selectCrmCustomerListVO(crmCustomer);
         List<CrmCustomerExportVO> exportList=new ArrayList<>();
-        boolean checkPhone = isCheckPhone();
+        SysRole sysRole = isCheckPermission();
         for(CrmCustomerListVO customer:list){
             CrmCustomerExportVO vo=new CrmCustomerExportVO();
             if(customer.getSource()!=null){
                 vo.setSource(customer.getSource().toString());
             }
             BeanUtils.copyProperties(customer,vo);
-            if(customer.getMobile()!=null && !checkPhone){
+            if(customer.getMobile()!=null && !(sysRole.getIsCheckPhone()==1)){
                 vo.setMobile(customer.getMobile().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
             }
             exportList.add(vo);
@@ -197,9 +197,9 @@ public class CrmCustomerController extends BaseController
         }
         List<CrmCustomerListVO> list = crmCustomerService.selectCrmCustomerListQueryParam(crmCustomer);
         if (list != null) {
-            boolean checkPhone = isCheckPhone();
+            SysRole sysRole = isCheckPermission();
             for (CrmCustomerListVO vo : list) {
-                if(vo.getMobile()!=null && !checkPhone){
+                if(vo.getMobile()!=null && !(sysRole.getIsCheckPhone()==1)){
                     vo.setMobile(vo.getMobile().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
                 }
 
@@ -211,19 +211,21 @@ public class CrmCustomerController extends BaseController
 
     @Autowired
     private ISysRoleService sysRoleService;
-    private boolean isCheckPhone() {
+    private SysRole isCheckPermission() {
+        SysRole sysRole = new SysRole();
         SysUser user = getLoginUser().getUser();
         boolean flag = user.isAdmin();
         if (flag) {
-            return true;
-        }
-        List<SysRole> roles = user.getRoles();
-        if (roles != null && !roles.isEmpty()) {
-            Long[] roleIds = roles.stream().map(SysRole::getRoleId).toArray(Long[]::new);
-            return sysRoleService.getIsCheckPhone(roleIds);
+            sysRole.setIsCheckPhone(1);
+            sysRole.setIsCheckAddress(1);
+        } else {
+            List<SysRole> roles = user.getRoles();
+            if (roles != null && !roles.isEmpty()) {
+                Long[] roleIds = roles.stream().map(SysRole::getRoleId).toArray(Long[]::new);
+                return sysRoleService.getIsCheckPermission(roleIds);
+            }
         }
-
-        return false;
+        return sysRole;
     }
 
 

+ 23 - 23
fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderController.java

@@ -260,8 +260,9 @@ public class FsStoreOrderController extends BaseController
         task.setUserId(SecurityUtils.getUserId());
         exportTaskService.insertFsExportTask(task);
         param.setTaskId(task.getTaskId());
-        boolean checkPhone = isCheckPhone();
-        exportTaskService.exportStore1Data(param,checkPhone, filterList);
+
+        SysRole sysRole = isCheckPermission();
+        exportTaskService.exportStore1Data(param,sysRole.getIsCheckPhone() == 1,sysRole.getIsCheckAddress() == 1, filterList);
 
         return new AjaxResult(200,"后台正在导出,请等待...任务ID:"+task.getTaskId(),task.getTaskId());
 
@@ -270,19 +271,21 @@ public class FsStoreOrderController extends BaseController
 
     @Autowired
     private ISysRoleService sysRoleService;
-    private boolean isCheckPhone() {
+    private SysRole isCheckPermission() {
+        SysRole sysRole = new SysRole();
         SysUser user = getLoginUser().getUser();
         boolean flag = user.isAdmin();
         if (flag) {
-            return true;
-        }
-        List<SysRole> roles = user.getRoles();
-        if (roles != null && !roles.isEmpty()) {
-            Long[] roleIds = roles.stream().map(SysRole::getRoleId).toArray(Long[]::new);
-            return sysRoleService.getIsCheckPhone(roleIds);
+            sysRole.setIsCheckPhone(1);
+            sysRole.setIsCheckAddress(1);
+        } else {
+            List<SysRole> roles = user.getRoles();
+            if (roles != null && !roles.isEmpty()) {
+                Long[] roleIds = roles.stream().map(SysRole::getRoleId).toArray(Long[]::new);
+                return sysRoleService.getIsCheckPermission(roleIds);
+            }
         }
-
-        return false;
+        return sysRole;
     }
 
     @GetMapping("/importTemplate")
@@ -767,19 +770,16 @@ public class FsStoreOrderController extends BaseController
 
     private FsStoreOrderDf getDFInfo(String loginAccount) {
         //查询订单账户 判断是否存在该订单账户
-        List<DFConfigVo> erpAccounts = fsStoreOrderService.getErpAccount();
+        FsDfAccount erpAccount = fsDfAccountService.selectFsDfAccountByAccount(loginAccount);
         FsStoreOrderDf df = new FsStoreOrderDf();
-        for (DFConfigVo erpAccount : erpAccounts) {
-            if (loginAccount.equals(erpAccount.getLoginAccount())){
-                //添加df记录
-                df.setAppKey(erpAccount.getDfAppKey());
-                df.setAppSecret(erpAccount.getDfAppsecret());
-                df.setLoginAccount(loginAccount);
-                df.setMonthlyCard(erpAccount.getMonthlyCard());
-                df.setExpressProductCode(erpAccount.getExpressProductCode());
-                df.setStatus(0);
-                break;
-            }
+        if (erpAccount != null){
+            //添加df记录
+            df.setAppKey(erpAccount.getDfAppKey());
+            df.setAppSecret(erpAccount.getDfAppsecret());
+            df.setLoginAccount(loginAccount);
+            df.setMonthlyCard(erpAccount.getMonthlyCard());
+            df.setExpressProductCode(erpAccount.getExpressProductCode());
+            df.setStatus(0);
         }
         return df;
     }

+ 19 - 17
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -101,10 +101,10 @@ public class FsUserController extends BaseController
             fsUser.setPhone(encryptPhone(fsUser.getPhone()));
         }
         List<FsUserVO> list = fsUserService.selectFsUserListVO(fsUser);
-        boolean checkPhone = isCheckPhone();
+        SysRole sysRole = isCheckPermission();
         for (FsUserVO fsUserVO : list) {
             if(fsUserVO.getPhone() != null&&fsUserVO.getPhone()!=""){
-                if (!checkPhone){
+                if (!(sysRole.getIsCheckPhone()==1)){
                     if (fsUserVO.getPhone().length()>11){
                         fsUserVO.setPhone(decryptPhoneMk(fsUserVO.getPhone()));
                     }else {
@@ -123,19 +123,21 @@ public class FsUserController extends BaseController
 
     @Autowired
     private ISysRoleService sysRoleService;
-    private boolean isCheckPhone() {
+    private SysRole isCheckPermission() {
+        SysRole sysRole = new SysRole();
         SysUser user = getLoginUser().getUser();
         boolean flag = user.isAdmin();
         if (flag) {
-            return true;
-        }
-        List<SysRole> roles = user.getRoles();
-        if (roles != null && !roles.isEmpty()) {
-            Long[] roleIds = roles.stream().map(SysRole::getRoleId).toArray(Long[]::new);
-            return sysRoleService.getIsCheckPhone(roleIds);
+            sysRole.setIsCheckPhone(1);
+            sysRole.setIsCheckAddress(1);
+        } else {
+            List<SysRole> roles = user.getRoles();
+            if (roles != null && !roles.isEmpty()) {
+                Long[] roleIds = roles.stream().map(SysRole::getRoleId).toArray(Long[]::new);
+                return sysRoleService.getIsCheckPermission(roleIds);
+            }
         }
-
-        return false;
+        return sysRole;
     }
 
     @PreAuthorize("@ss.hasPermi('his:user:list')")
@@ -147,10 +149,10 @@ public class FsUserController extends BaseController
             fsUser.setPhone(encryptPhone(fsUser.getPhone()));
         }
         List<FsUserVO> list = fsUserService.selectFsUserVOListByProject(fsUser);
-        boolean checkPhone = isCheckPhone();
+        SysRole sysRole = isCheckPermission();
         for (FsUserVO fsUserVO : list) {
             if(fsUserVO.getPhone() != null&&fsUserVO.getPhone()!=""){
-                if (!checkPhone){
+                if (!(sysRole.getIsCheckPhone()==1)){
                     if (fsUserVO.getPhone().length()>11){
                         fsUserVO.setPhone(decryptPhoneMk(fsUserVO.getPhone()));
                     }else {
@@ -174,10 +176,10 @@ public class FsUserController extends BaseController
             fsUser.setPhone(encryptPhone(fsUser.getPhone()));
         }
         List<FsUserVO> list = fsUserService.selectFsUserVOListByProject(fsUser);
-        boolean checkPhone = isCheckPhone();
+        SysRole sysRole = isCheckPermission();
         for (FsUserVO fsUserVO : list) {
             if(fsUserVO.getPhone() != null&&fsUserVO.getPhone()!=""){
-                if (!checkPhone){
+                if (!(sysRole.getIsCheckPhone()==1)){
                     if (fsUserVO.getPhone().length()>11){
                         fsUserVO.setPhone(decryptPhoneMk(fsUserVO.getPhone()));
                     }else {
@@ -211,9 +213,9 @@ public class FsUserController extends BaseController
             return AjaxResult.error("导出数据不可超过1w条");
         }
         List<FsUserExportListVO> list = fsUserService.selectFsUserExportListVO(fsUser);
-        boolean checkPhone = isCheckPhone();
+        SysRole sysRole = isCheckPermission();
         for (FsUserExportListVO vo : list) {
-            if (vo.getMobile()!=null && !checkPhone){
+            if (vo.getMobile()!=null && !(sysRole.getIsCheckPhone()==1)){
                 vo.setMobile(vo.getMobile().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
             } else {
                 if (vo.getMobile().length()>11){

+ 27 - 27
fs-admin/src/main/java/com/fs/task/SgTestController.java

@@ -1,27 +1,27 @@
-package com.fs.task;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-
-/**
- * @description:
- * @author: Guos
- * @time: 2025/10/23 下午2:18
- */
-@RestController
-@RequestMapping("/sg/test")
-public class SgTestController {
-
-    @Resource
-    private SyncTuLinStudentInfoTask syncTuLinStudentInfoTask;
-
-
-    @RequestMapping("/execute")
-    public void execute(){
-        syncTuLinStudentInfoTask.execute();
-    }
-
-
-}
+//package com.fs.task;
+//
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.annotation.Resource;
+//
+///**
+// * @description:
+// * @author: Guos
+// * @time: 2025/10/23 下午2:18
+// */
+//@RestController
+//@RequestMapping("/sg/test")
+//public class SgTestController {
+//
+//    @Resource
+//    private SyncTuLinStudentInfoTask syncTuLinStudentInfoTask;
+//
+//
+//    @RequestMapping("/execute")
+//    public void execute(){
+//        syncTuLinStudentInfoTask.execute();
+//    }
+//
+//
+//}

+ 0 - 2
fs-admin/src/main/java/com/fs/task/SyncTuLinStudentInfoTask.java

@@ -1,10 +1,8 @@
 package com.fs.task;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fs.tulin.service.ITulinInfoSyncLogService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Component;
-
 import javax.annotation.Resource;
 
 /**

+ 26 - 7
fs-admin/src/main/java/com/fs/web/controller/system/SysLoginController.java

@@ -94,20 +94,39 @@ public class SysLoginController
             ajax.put("medicalMallConfig", medicalMallConfig);
         }
         ajax.put("user", user);
-        Integer isAdmin = 0;
+        SysRole isAdmin = new SysRole();
+        getIsAdmin(isAdmin, permissions, user);
+        ajax.put("isAdmin", isAdmin);
+        ajax.put("roles", roles);
+        ajax.put("permissions", permissions);
+
+        return ajax;
+    }
+
+    /**
+     * 获取电话地址权限
+     * @param isAdmin
+     * @param permissions
+     * @param user
+     */
+    private void getIsAdmin(SysRole isAdmin, Set<String> permissions, SysUser user) {
+        isAdmin.setIsCheckAddress(0);
+        isAdmin.setIsCheckPhone(0);
         if (permissions.contains("*:*:*")){
-            isAdmin = 1;
+            isAdmin.setIsCheckAddress(1);
+            isAdmin.setIsCheckPhone(1);
         }else {
             List<SysRole> roleList = user.getRoles();
             if (roleList != null && !roleList.isEmpty()) {
                 Long[] roleIds = roleList.stream().map(SysRole::getRoleId).toArray(Long[]::new);
-                isAdmin = roleService.getIsCheckPhone(roleIds)?1:0;
+//                isAdmin = roleService.getIsCheckPhone(roleIds)?1:0;
+                SysRole isCheckPermission = roleService.getIsCheckPermission(roleIds);
+                if (isCheckPermission != null) {
+                    isAdmin.setIsCheckPhone(isCheckPermission.getIsCheckPhone());
+                    isAdmin.setIsCheckAddress(isCheckPermission.getIsCheckAddress());
+                }
             }
         }
-        ajax.put("roles", roles);
-        ajax.put("permissions", permissions);
-        ajax.put("isAdmin", isAdmin);
-        return ajax;
     }
 
     /**

+ 10 - 1
fs-company/src/main/java/com/fs/company/controller/qw/QwSopLogsController.java

@@ -1,10 +1,12 @@
 package com.fs.company.controller.qw;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.core.redis.RedisCache;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.poi.ExcelUtil;
@@ -60,7 +62,8 @@ public class QwSopLogsController extends BaseController
 
     @Autowired
     private ICompanyUserService iCompanyUserService;
-
+    @Autowired
+    private RedisCache redisCache;
     @Autowired
     private CompanyDeptServiceImpl companyDeptService;
 
@@ -266,6 +269,12 @@ public class QwSopLogsController extends BaseController
     @PutMapping("/editCourseQwSopLogs/{ids}")
     public AjaxResult editCourseQwSopLogs(@PathVariable String[] ids)
     {
+       if (ObjectUtil.isNotEmpty(ids)){
+           for (String id : ids) {
+               String key = "qw:logs:pad:send:id:" + id;
+               redisCache.deleteObject(key);
+           }
+       }
         return toAjax(iQwSopLogsService.editCourseQwSopLogs(ids));
     }
 

+ 2 - 2
fs-company/src/main/java/com/fs/company/controller/store/FsStoreOrderController.java

@@ -130,7 +130,7 @@ public class FsStoreOrderController extends BaseController
         task.setCompanyUserId(userId);
         exportTaskService.insertFsExportTask(task);
         param.setTaskId(task.getTaskId());
-        exportTaskService.exportStore1Data(param,false, null);
+        exportTaskService.exportStore1Data(param,false, false,null);
         return new AjaxResult(200,"后台正在导出,请等待...任务ID:"+task.getTaskId(),task.getTaskId());
 
 
@@ -172,7 +172,7 @@ public class FsStoreOrderController extends BaseController
         task.setCompanyUserId(userId);
         exportTaskService.insertFsExportTask(task);
         param.setTaskId(task.getTaskId());
-        exportTaskService.exportStore1Data(param,false, null);
+        exportTaskService.exportStore1Data(param,false,false, null);
         return new AjaxResult(200,"后台正在导出,请等待...任务ID:"+task.getTaskId(),task.getTaskId());
     }
     /**

+ 3 - 0
fs-service/src/main/java/com/fs/course/service/impl/BalanceRollbackErrorServiceImpl.java

@@ -15,6 +15,8 @@ import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -87,6 +89,7 @@ public class BalanceRollbackErrorServiceImpl extends ServiceImpl<BalanceRollback
     }
 
     @Override
+    @EventListener(ApplicationReadyEvent.class)
     public void initCompanyBalance() {
 
         // 查询公司表 Company

+ 10 - 7
fs-service/src/main/java/com/fs/his/mapper/FsDfAccountMapper.java

@@ -3,17 +3,18 @@ package com.fs.his.mapper;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.his.domain.FsDfAccount;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 代服账户Mapper接口
- * 
+ *
  * @author fs
  * @date 2025-10-13
  */
 public interface FsDfAccountMapper extends BaseMapper<FsDfAccount>{
     /**
      * 查询代服账户
-     * 
+     *
      * @param id 代服账户主键
      * @return 代服账户
      */
@@ -21,7 +22,7 @@ public interface FsDfAccountMapper extends BaseMapper<FsDfAccount>{
 
     /**
      * 查询代服账户列表
-     * 
+     *
      * @param fsDfAccount 代服账户
      * @return 代服账户集合
      */
@@ -29,7 +30,7 @@ public interface FsDfAccountMapper extends BaseMapper<FsDfAccount>{
 
     /**
      * 新增代服账户
-     * 
+     *
      * @param fsDfAccount 代服账户
      * @return 结果
      */
@@ -37,7 +38,7 @@ public interface FsDfAccountMapper extends BaseMapper<FsDfAccount>{
 
     /**
      * 修改代服账户
-     * 
+     *
      * @param fsDfAccount 代服账户
      * @return 结果
      */
@@ -45,7 +46,7 @@ public interface FsDfAccountMapper extends BaseMapper<FsDfAccount>{
 
     /**
      * 删除代服账户
-     * 
+     *
      * @param id 代服账户主键
      * @return 结果
      */
@@ -53,9 +54,11 @@ public interface FsDfAccountMapper extends BaseMapper<FsDfAccount>{
 
     /**
      * 批量删除代服账户
-     * 
+     *
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
     int deleteFsDfAccountByIds(Long[] ids);
+
+    FsDfAccount selectFsDfAccountByAccount(@Param("loginAccount") String loginAccount);
 }

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

@@ -58,4 +58,6 @@ public interface IFsDfAccountService extends IService<FsDfAccount>{
      * @return 结果
      */
     int deleteFsDfAccountById(Long id);
+
+    FsDfAccount selectFsDfAccountByAccount(String loginAccount);
 }

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

@@ -64,7 +64,7 @@ public interface IFsExportTaskService
 
     Integer isExportType1( Long userId);
 
-    public void exportStore1Data(FsStoreOrderParam param, boolean isAdmin, ArrayList<String>filter);
+    public void exportStore1Data(FsStoreOrderParam param, boolean isCheckPhone, boolean isCheckAddress,ArrayList<String>filter);
 
 
     public void exportStoreData(FsStoreOrderParam fsStoreOrder);

+ 12 - 7
fs-service/src/main/java/com/fs/his/service/impl/FsDfAccountServiceImpl.java

@@ -11,7 +11,7 @@ import com.fs.his.service.IFsDfAccountService;
 
 /**
  * 代服账户Service业务层处理
- * 
+ *
  * @author fs
  * @date 2025-10-13
  */
@@ -20,7 +20,7 @@ public class FsDfAccountServiceImpl extends ServiceImpl<FsDfAccountMapper, FsDfA
 
     /**
      * 查询代服账户
-     * 
+     *
      * @param id 代服账户主键
      * @return 代服账户
      */
@@ -32,7 +32,7 @@ public class FsDfAccountServiceImpl extends ServiceImpl<FsDfAccountMapper, FsDfA
 
     /**
      * 查询代服账户列表
-     * 
+     *
      * @param fsDfAccount 代服账户
      * @return 代服账户
      */
@@ -44,7 +44,7 @@ public class FsDfAccountServiceImpl extends ServiceImpl<FsDfAccountMapper, FsDfA
 
     /**
      * 新增代服账户
-     * 
+     *
      * @param fsDfAccount 代服账户
      * @return 结果
      */
@@ -57,7 +57,7 @@ public class FsDfAccountServiceImpl extends ServiceImpl<FsDfAccountMapper, FsDfA
 
     /**
      * 修改代服账户
-     * 
+     *
      * @param fsDfAccount 代服账户
      * @return 结果
      */
@@ -70,7 +70,7 @@ public class FsDfAccountServiceImpl extends ServiceImpl<FsDfAccountMapper, FsDfA
 
     /**
      * 批量删除代服账户
-     * 
+     *
      * @param ids 需要删除的代服账户主键
      * @return 结果
      */
@@ -82,7 +82,7 @@ public class FsDfAccountServiceImpl extends ServiceImpl<FsDfAccountMapper, FsDfA
 
     /**
      * 删除代服账户信息
-     * 
+     *
      * @param id 代服账户主键
      * @return 结果
      */
@@ -91,4 +91,9 @@ public class FsDfAccountServiceImpl extends ServiceImpl<FsDfAccountMapper, FsDfA
     {
         return baseMapper.deleteFsDfAccountById(id);
     }
+
+    @Override
+    public FsDfAccount selectFsDfAccountByAccount(String loginAccount) {
+        return baseMapper.selectFsDfAccountByAccount(loginAccount);
+    }
 }

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

@@ -124,9 +124,9 @@ public class FsExportTaskServiceImpl implements IFsExportTaskService
 
     @Async
     @Override
-    public void exportStore1Data(FsStoreOrderParam fsStoreOrder,boolean isAdmin,ArrayList<String> filter) {
+    public void exportStore1Data(FsStoreOrderParam fsStoreOrder, boolean isCheckPhone, boolean isCheckAddress,ArrayList<String> filter) {
         if ("金牛明医".equals(cloudHostProper.getCompanyName())){
-            exportErpData(fsStoreOrder, isAdmin,filter);
+            exportErpData(fsStoreOrder, isCheckPhone,isCheckAddress,filter);
         } else {
             List<FsStoreOrderExportVO> list = fsStoreOrderMapper.selectFsStoreOrderListVOByExport(fsStoreOrder);
 
@@ -137,13 +137,13 @@ public class FsExportTaskServiceImpl implements IFsExportTaskService
                     if (vo.getCycle()!=null){
                         vo.setFollowCount(vo.getCycle()/ vo.getFollowFrequency());
                     }
-                    if (vo.getUserPhone() != null &&  !isAdmin) {
+                    if (vo.getUserPhone() != null &&  !isCheckPhone) {
                         vo.setUserPhone(vo.getUserPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
                     }
-                    if (vo.getUserPhone() != null && isAdmin && vo.getUserPhone().length()>11) {
+                    if (vo.getUserPhone() != null && isCheckPhone && vo.getUserPhone().length()>11) {
                         vo.setUserPhone(PhoneUtil.decryptPhone(vo.getUserPhone()));
                     }
-                    if (vo.getUserAddress() != null) {
+                    if (vo.getUserAddress() != null && !isCheckAddress) {
                         vo.setUserAddress(ParseUtils.parseAddress(vo.getUserAddress()));
                     }
                 }
@@ -210,7 +210,7 @@ public class FsExportTaskServiceImpl implements IFsExportTaskService
         return false;
     }
 
-    private void exportErpData(FsStoreOrderParam fsStoreOrder, boolean isAdmin,ArrayList<String> filter) {
+    private void exportErpData(FsStoreOrderParam fsStoreOrder,  boolean isCheckPhone, boolean isCheckAddress,ArrayList<String> filter) {
         List<FsStoreOrderErpExportVO> erpList = fsStoreOrderMapper.selectFsStoreOrderListErpVOByExport(fsStoreOrder);
         //对手机号脱敏
         if (erpList != null) {
@@ -219,13 +219,13 @@ public class FsExportTaskServiceImpl implements IFsExportTaskService
                 if (vo.getCycle()!=null){
                     vo.setFollowCount(vo.getCycle()/ vo.getFollowFrequency());
                 }
-                if (vo.getUserPhone() != null &&  !isAdmin) {
+                if (vo.getUserPhone() != null &&  !isCheckPhone) {
                     vo.setUserPhone(vo.getUserPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
                 }
-                if (vo.getUserPhone() != null && isAdmin && vo.getUserPhone().length()>11) {
+                if (vo.getUserPhone() != null && isCheckPhone && vo.getUserPhone().length()>11) {
                     vo.setUserPhone(PhoneUtil.decryptPhone(vo.getUserPhone()));
                 }
-                if (vo.getUserAddress() != null && !isAdmin) {
+                if (vo.getUserAddress() != null && !isCheckAddress) {
                     vo.setUserAddress(ParseUtils.parseAddress(vo.getUserAddress()));
                 }
             }

+ 12 - 3
fs-service/src/main/java/com/fs/qw/service/impl/QwUserServiceImpl.java

@@ -14,6 +14,7 @@ import com.ecloud.sdk.ecs.v1.model.VmRebootRequest;
 import com.ecloud.sdk.ecs.v1.model.VmRebootResponse;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.utils.CloudHostUtils;
 import com.fs.common.utils.PubFun;
 import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyUser;
@@ -23,6 +24,7 @@ import com.fs.company.service.ICompanyUserService;
 import com.fs.config.ai.AiHostProper;
 import com.fs.config.cloud.CloudHostProper;
 import com.fs.his.config.FsSysConfig;
+import com.fs.his.domain.FsDfAccount;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.ipad.IpadSendUtils;
 import com.fs.ipad.param.WxSendAtMsgParam;
@@ -531,7 +533,10 @@ public class QwUserServiceImpl implements IQwUserService
         if (result.getData().flag){
             QwUser qwUser=new QwUser();
             qwUser.setAppKey(appKey);
-            qwUser.setLoginCodeUrl(result.getData().ipAddress);
+            if (!CloudHostUtils.hasCloudHostName("内蒙古一贴")) {
+                qwUser.setLoginCodeUrl(result.getData().ipAddress);
+            }
+//            qwUser.setLoginCodeUrl(result.getData().ipAddress);
 
             int i = qwUserMapper.updateQwUserByAppKeyToUrl(qwUser);
             if (i>0){
@@ -668,7 +673,9 @@ public class QwUserServiceImpl implements IQwUserService
                 if (result.getData().flag){
                     QwUser qwUser=new QwUser();
                     qwUser.setAppKey(appKey);
-                    qwUser.setLoginCodeUrl(result.getData().ipAddress);
+                    if (!CloudHostUtils.hasCloudHostName("内蒙古一贴")) {
+                        qwUser.setLoginCodeUrl(result.getData().ipAddress);
+                    }
 
                     int i = qwUserMapper.updateQwUserByAppKeyToUrl(qwUser);
                     if (i>0){
@@ -742,7 +749,9 @@ public class QwUserServiceImpl implements IQwUserService
                 if (result.getData().flag){
                     QwUser qwUser=new QwUser();
                     qwUser.setAppKey(appKey);
-                    qwUser.setLoginCodeUrl(result.getData().ipAddress);
+                    if (!CloudHostUtils.hasCloudHostName("内蒙古一贴")) {
+                        qwUser.setLoginCodeUrl(result.getData().ipAddress);
+                    }
 
                     int i = qwUserMapper.updateQwUserByAppKeyToUrl(qwUser);
                     if (i>0){

+ 7 - 0
fs-service/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -99,4 +100,10 @@ public class FsUserPageListVO {
     @ApiModelProperty(value = "用户-项目-销售ID")
     private Long userCompanyUserId;
 
+    @ApiModelProperty(value = "用户积分")
+    private BigDecimal integral;
+
+    @ApiModelProperty(value = "是否购买 1:是 0 否")
+    private BigDecimal isBuy;
+
 }

+ 1 - 1
fs-service/src/main/java/com/fs/system/service/ISysRoleService.java

@@ -171,5 +171,5 @@ public interface ISysRoleService
      */
     public int insertAuthUsers(Long roleId, Long[] userIds);
 
-    boolean getIsCheckPhone(Long[] roleIds);
+    SysRole getIsCheckPermission(Long[] roleIds);
 }

+ 17 - 4
fs-service/src/main/java/com/fs/system/service/impl/SysRoleServiceImpl.java

@@ -422,17 +422,30 @@ public class SysRoleServiceImpl implements ISysRoleService
     }
 
     @Override
-    public boolean getIsCheckPhone(Long[] roleIds) {
+    public SysRole getIsCheckPermission(Long[] roleIds) {
+        Integer isCheckPhone = 0;
+        Integer isCheckAddress = 0;
         if (roleIds != null && roleIds.length > 0){
             List<SysRole> roles = roleMapper.selectSysRoleByIds(roleIds);
             if (roles != null && !roles.isEmpty()){
                 for (SysRole role : roles) {
-                    if (role.getIsCheckPhone() == 1){
-                        return true;
+                    if (isCheckPhone != 1){
+                        if (role.getIsCheckPhone() != null && role.getIsCheckPhone() == 1){
+                            isCheckPhone = 1;
+                        }
                     }
+                    if (isCheckAddress != 1){
+                        if (role.getIsCheckAddress() != null && role.getIsCheckAddress() == 1){
+                            isCheckAddress = 1;
+                        }
+                    }
+
                 }
             }
         }
-        return false;
+        SysRole sysRole = new SysRole();
+        sysRole.setIsCheckPhone(isCheckPhone);
+        sysRole.setIsCheckAddress(isCheckAddress);
+        return sysRole;
     }
 }

+ 17 - 0
fs-service/src/main/java/com/fs/tulin/entity/PeriodInfo.java

@@ -0,0 +1,17 @@
+package com.fs.tulin.entity;
+
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: Guos
+ * @time: 2025/10/24 上午10:32
+ */
+@Data
+public class PeriodInfo{
+
+    private Long courseId;
+
+    private String courseName;
+
+}

+ 9 - 1
fs-service/src/main/java/com/fs/tulin/mapper/TulinInfoSyncLogMapper.java

@@ -1,7 +1,8 @@
 package com.fs.tulin.mapper;
 
+
+import com.fs.tulin.entity.PeriodInfo;
 import com.fs.tulin.entity.QwExUserInfo;
-import com.fs.tulin.entity.StudentInfo;
 import com.fs.tulin.entity.TulinInfoSyncLog;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -47,4 +48,11 @@ public interface TulinInfoSyncLogMapper {
      */
     List<QwExUserInfo> selectStudentInfo();
 
+    /**
+     * 根据用户id查询
+     * @param fsUserId
+     * @return
+     */
+    List<PeriodInfo> selectPeriodInfo(@Param("fsUserId") Long fsUserId);
+
 }

+ 30 - 19
fs-service/src/main/java/com/fs/tulin/service/impl/TulinInfoSyncLogServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fs.tulin.service.impl;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fs.tulin.entity.PeriodInfo;
 import com.fs.tulin.entity.QwExUserInfo;
 import com.fs.tulin.entity.StudentInfo;
 import com.fs.tulin.entity.TulinInfoSyncLog;
@@ -11,6 +12,7 @@ import com.fs.tulin.utils.PharmacyEnum;
 import com.fs.tulin.utils.SyncStudentInfoService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.core.env.Environment;
@@ -36,9 +38,10 @@ public class TulinInfoSyncLogServiceImpl implements ITulinInfoSyncLogService {
     private final Environment environment;
 
     private final String PROD_URL = "https://papi.xiangyue.life/api/v1/mp/sync/student?sign=%s&t=%d";
-    private final String DEV_URL = "https://api.xiangyue.life/api/v1/mp/sync/student?sign=%s&t=%d";
 
+    private final String DEV_URL = "https://api.xiangyue.life/api/v1/mp/sync/student?sign=%s&t=%d";
 
+    private final String PROD_CORPID = "lRz72QOIYBxJW2RBAp2UYe1ckjVpixHL";
     @Override
     public void syncInfo() {
         // 获取当前激活的profile
@@ -58,26 +61,12 @@ public class TulinInfoSyncLogServiceImpl implements ITulinInfoSyncLogService {
                 studentInfo.setColumn_name(ColumnNameEnum.GYBNX.getName());
                 studentInfo.setPharmacy_id(PharmacyEnum.YJKYSY.getPharmacyId());
                 studentInfo.setService_phone("15141712344");
-                try {
-                    TulinInfoSyncLog tulinInfoSyncLog = SyncStudentInfoService.send(PROD_URL,"lRz72QOIYBxJW2RBAp2UYe1ckjVpixHL", studentInfo);
-                    tulinInfoSyncLog.setFsUserId(qwExUserInfo.getFs_user_id());
-                    insert(tulinInfoSyncLog);
-                } catch (JsonProcessingException e) {
-                    throw new RuntimeException(e);
+                List<PeriodInfo> periodInfos = tulinInfoSyncLogMapper.selectPeriodInfo(qwExUserInfo.getFs_user_id());
+                if(CollectionUtils.isNotEmpty(periodInfos)){
+                    studentInfo.setPeriod_name(periodInfos.get(0).getCourseName());
                 }
-            }
-        }
-        if(activeProfile.equals("dev")) {
-            log.info("线下开始执行数据同步");
-            for (QwExUserInfo qwExUserInfo : qwExUserInfos) {
-                StudentInfo studentInfo = new StudentInfo();
-                BeanUtils.copyProperties(qwExUserInfo, studentInfo);
-                studentInfo.setAppid("wx6688e6b9b6fb8700");
-                studentInfo.setColumn_name(ColumnNameEnum.GYBNX.getName());
-                studentInfo.setPharmacy_id(PharmacyEnum.YJKYSY.getPharmacyId());
-                studentInfo.setService_phone("15141712344");
                 try {
-                    TulinInfoSyncLog tulinInfoSyncLog = SyncStudentInfoService.send(PROD_URL,"lRz72QOIYBxJW2RBAp2UYe1ckjVpixHL", studentInfo);
+                    TulinInfoSyncLog tulinInfoSyncLog = SyncStudentInfoService.send(PROD_URL,PROD_CORPID, studentInfo);
                     tulinInfoSyncLog.setFsUserId(qwExUserInfo.getFs_user_id());
                     insert(tulinInfoSyncLog);
                 } catch (JsonProcessingException e) {
@@ -85,6 +74,28 @@ public class TulinInfoSyncLogServiceImpl implements ITulinInfoSyncLogService {
                 }
             }
         }
+//        if(activeProfile.equals("dev")) {
+//            log.info("线下开始执行数据同步");
+//            for (QwExUserInfo qwExUserInfo : qwExUserInfos) {
+//                StudentInfo studentInfo = new StudentInfo();
+//                BeanUtils.copyProperties(qwExUserInfo, studentInfo);
+//                studentInfo.setAppid("wx6688e6b9b6fb8700");
+//                studentInfo.setColumn_name(ColumnNameEnum.GYBNX.getName());
+//                studentInfo.setPharmacy_id(PharmacyEnum.YJKYSY.getPharmacyId());
+//                studentInfo.setService_phone("15141712344");
+//                List<PeriodInfo> periodInfos = tulinInfoSyncLogMapper.selectPeriodInfo(qwExUserInfo.getFs_user_id());
+//                if(CollectionUtils.isNotEmpty(periodInfos)){
+//                    studentInfo.setPeriod_name(periodInfos.get(0).getCourseName());
+//                }
+//                try {
+//                    TulinInfoSyncLog tulinInfoSyncLog = SyncStudentInfoService.send(PROD_URL,PROD_CORPID, studentInfo);
+//                    tulinInfoSyncLog.setFsUserId(qwExUserInfo.getFs_user_id());
+//                    insert(tulinInfoSyncLog);
+//                } catch (JsonProcessingException e) {
+//                    throw new RuntimeException(e);
+//                }
+//            }
+//        }
     }
 
 

+ 6 - 6
fs-service/src/main/resources/application-common.yml

@@ -14,12 +14,12 @@ fs:
   addressEnabled: false
   # 验证码类型 math 数组计算 char 字符验证
   captchaType: math
-  jwt:
-    # 加密秘钥
-    secret: f4e2e52034348f86b67cde581c0f9eb5
-    # token有效时长,7天,单位秒
-    expire: 31536000
-    header: AppToken
+#  jwt:
+#    # 加密秘钥
+#    secret: f4e2e52034348f86b67cde581c0f9eb5
+#    # token有效时长,7天,单位秒
+#    expire: 31536000
+#    header: AppToken
 # 开发环境配置
 server:
   servlet:

+ 6 - 0
fs-service/src/main/resources/application-config-druid-hdt.yml

@@ -65,6 +65,12 @@ watch:
 fs :
   commonApi: http://192.168.0.70:8010
   h5CommonApi: http://119.29.195.254:8010
+  jwt:
+    # 加密秘钥
+    secret: f4e2e52034348f86b67cde581c0f9eb6
+    # token有效时长,7天,单位秒
+    expire: 31536000
+    header: AppToken
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16

+ 6 - 0
fs-service/src/main/resources/application-config-druid-jnmy.yml

@@ -60,6 +60,12 @@ watch:
 fs :
   commonApi: http://192.168.0.18:7771
   h5CommonApi: http://192.168.0.18:7771
+  jwt:
+    # 加密秘钥
+    secret: f4e2e52034348f86b67cde581c0f9eb8
+    # token有效时长,7天,单位秒
+    expire: 31536000
+    header: AppToken
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16

+ 6 - 0
fs-service/src/main/resources/application-config-myhk.yml

@@ -65,6 +65,12 @@ watch:
 
 fs :
   commonApi: http://172.27.0.7:8010
+  jwt:
+    # 加密秘钥
+    secret: f4e2e52034348f86b67cde581c0f9e10
+    # token有效时长,7天,单位秒
+    expire: 31536000
+    header: AppToken
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16

+ 7 - 1
fs-service/src/main/resources/application-config-zkzh.yml

@@ -110,7 +110,7 @@ tencent_cloud_config:
   secret_key: u5SuS80342xzx8FRBukza9lVNHKNMSaB
   bucket: zkzh-1323137866
   app_id: 1323137866
-  region: chongqing
+  region: ap-chongqing
   proxy: zkzh
 cloud_host:
   company_name: 中康
@@ -134,6 +134,12 @@ watch:
 
 fs:
   commonApi: http://172.21.76.167:8010
+  jwt:
+    # 加密秘钥
+    secret: f4e2e52034348f86b67cde581c0f9eb9
+    # token有效时长,7天,单位秒
+    expire: 31536000
+    header: AppToken
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16

+ 4 - 0
fs-service/src/main/resources/mapper/his/FsDfAccountMapper.xml

@@ -50,6 +50,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectFsDfAccountVo"/>
         where id = #{id}
     </select>
+    <select id="selectFsDfAccountByAccount" resultType="com.fs.his.domain.FsDfAccount">
+        <include refid="selectFsDfAccountVo"/>
+        where login_account like #{loginAccount}
+    </select>
 
     <insert id="insertFsDfAccount" parameterType="FsDfAccount" useGeneratedKeys="true" keyProperty="id">
         insert into fs_df_account

+ 7 - 7
fs-service/src/main/resources/mapper/his/FsStoreOrderMapper.xml

@@ -571,7 +571,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             and so.status = #{maps.status}
         </if>
         <if test="maps.status == 6">
-            and so.`status`= 1
+            and so.`status`= 2
             and (
             so.store_id in (select store_id from fs_store where delivery_type=2 or delivery_type=1)
             )
@@ -779,7 +779,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and so.status = #{maps.status}
             </if>
             <if test="maps.status == 6">
-                and so.`status`= 1
+                and so.`status`= 2
                 and (
                 so.store_id in (select store_id from fs_store where delivery_type=2 or delivery_type=1)
                 )
@@ -997,7 +997,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and so.status = #{maps.status}
             </if>
             <if test="maps.status == 6">
-                and so.`status`= 1
+                and so.`status`= 2
                 and (
                 so.store_id in (select store_id from fs_store where delivery_type=2 or delivery_type=1)
                 )
@@ -1221,7 +1221,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             and so.status = #{maps.status}
         </if>
         <if test="maps.status == 6">
-            and so.`status`= 1
+            and so.`status`= 2
             and ( so.store_id in (select store_id from fs_store where delivery_type=2 or delivery_type=1))
             and  (so.extend_order_id is null or  so.extend_order_id like '')
         </if>
@@ -1453,7 +1453,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND so.status = #{maps.status}
         </if>
         <if test="maps.status == 6">
-            AND so.`status` = 1
+            AND so.`status` = 2
             AND (
             so.store_id IN (SELECT store_id FROM fs_store WHERE delivery_type=2 OR delivery_type=1)
             )
@@ -1703,7 +1703,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and so.status = #{maps.status}
             </if>
             <if test="maps.status == 6">
-                and so.`status`= 1
+                and so.`status`= 2
                 and (
                 so.store_id in (select store_id from fs_store where delivery_type=2 or delivery_type=1)
                 )
@@ -1914,7 +1914,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and so.status = #{maps.status}
             </if>
             <if test="maps.status == 6">
-                and so.`status`= 1
+                and so.`status`= 2
                 and (
                 so.store_id in (select store_id from fs_store where delivery_type=2 or delivery_type=1)
                 )

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

@@ -342,7 +342,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_user.remark,
         ucu.company_user_id,
         ucu.company_id,
-        ucu.project_id
+        ucu.project_id,
+        fs_user.integral,
+        if(fs_user.pay_count>0,1,0) as isBuy
         FROM
         fs_user
         left join fs_user_company_user ucu on ucu.user_id = fs_user.user_id

+ 1 - 1
fs-service/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -98,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		 where r.role_key=#{roleKey} limit 1
 	</select>
 	<select id="selectSysRoleByIds" resultType="com.fs.common.core.domain.entity.SysRole">
-		select role_id,is_check_phone from sys_role where role_id in
+		select role_id,is_check_phone,is_check_address from sys_role where role_id in
 		<foreach collection="array" item="roleId" open="(" separator="," close=")">
 			#{roleId}
 		</foreach>

+ 15 - 0
fs-service/src/main/resources/mapper/tulin/TulinInfoSyncLogMapper.xml

@@ -79,4 +79,19 @@
 
     </select>
 
+    <resultMap id="selectCourseInfoMap" type="com.fs.tulin.entity.PeriodInfo">
+        <id column="course_id" property="courseId" />
+        <result column="course_name" property="courseName" />
+    </resultMap>
+
+    <select id="selectPeriodInfo" resultMap="selectCourseInfoMap">
+        SELECT DISTINCT fcwl.course_id, fuc.course_name
+        FROM
+            fs_course_watch_log AS fcwl
+                INNER JOIN fs_user_course AS fuc ON fuc.course_id  = fcwl.course_id
+        WHERE
+            fcwl.user_id = #{fsUserId}
+          AND fcwl.sop_id IS NOT NULL
+    </select>
+
 </mapper>

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

@@ -12,6 +12,7 @@ import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.sign.Md5Utils;
+import com.fs.company.domain.CompanyUser;
 import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.domain.FsPackage;
@@ -39,6 +40,7 @@ import com.google.zxing.WriterException;
 import io.jsonwebtoken.lang.Assert;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.BeanUtils;
@@ -134,7 +136,24 @@ public class UserController extends  AppBaseController {
             return R.error("操作异常");
         }
     }
-
+    @Login
+    @ApiOperation("获取用户信息ByUserId")
+    @GetMapping("/getUserInfoByUserId")
+    public R getUserInfoByUserId(
+            @ApiParam(required = true, name = "userId", value = "用户ID") @RequestParam(value = "userId", required = false) Long userId,
+            HttpServletRequest request){
+        try {
+            FsUser user=userService.selectFsUserByUserId(userId);
+            if (user.getPhone()!=null&&user.getPhone().length()>11&&!user.getPhone().matches("\\d+")){
+                user.setPhone(decryptPhoneMk(user.getPhone()));
+            }
+            Map<String,Object> map=new HashMap<>();
+            map.put("user",user);
+            return R.ok(map);
+        } catch (Exception e){
+            return R.error("操作异常");
+        }
+    }
     @Login
     @ApiOperation("判断用户是否存在头像昵称")
     @GetMapping("/checkUserInfo")

+ 1 - 0
fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserController.java

@@ -113,6 +113,7 @@ public class CourseFsUserController extends AppBaseController {
     @ApiOperation("答题")
     @PostMapping("/courseAnswer")
     @UserOperationLog(operationType = FsUserOperationEnum.ANSWER)
+    @RepeatSubmit
     public R courseAnswer(@RequestBody FsCourseQuestionAnswerUParam param){
         if (ObjectUtil.isEmpty(param.getUserId())){
             Long userId = Long.parseLong(getUserId());

+ 32 - 0
fs-user-app/src/main/java/com/fs/app/controller/course/CourseQwController.java

@@ -7,6 +7,7 @@ import com.fs.app.annotation.Login;
 import com.fs.app.controller.AppBaseController;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
+import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.core.utils.OrderCodeUtils;
 import com.fs.course.config.CourseConfig;
@@ -24,6 +25,7 @@ import com.fs.system.service.ISysConfigService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hc.openapi.tool.fastjson.JSON;
+import io.jsonwebtoken.Claims;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -36,7 +38,9 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Api("企微看课接口")
 @RestController
@@ -413,4 +417,32 @@ public class CourseQwController extends AppBaseController {
         return R.ok().put("data",course);
     }
 
+
+    @ApiOperation("检测是否登录")
+    @GetMapping("/checkLogin")
+    public R checkLogin(){
+        try {
+            HttpServletRequest request = ServletUtils.getRequest();
+            //获取用户凭证
+            String token = request.getHeader(jwtUtils.getHeader());
+            if(StringUtils.isBlank(token)){
+                token = request.getParameter(jwtUtils.getHeader());
+            }
+            //检查token是否存在
+            if (StringUtils.isBlank(token)) {
+                return R.error(4001, "登录凭证不能为空,重新授权");
+            }
+            Claims claims=jwtUtils.getClaimByToken(token);
+            if(claims==null || jwtUtils.isTokenExpired(claims.getExpiration())){
+                return R.error(4004,"回传token校验失败,重新授权");
+            }
+            return R.ok();
+
+        }catch (Exception e){
+            logger.error("检测登录状态异常: {}", e.getMessage(), e);
+            return R.error("系统异常,请稍后重试");
+        }
+
+    }
+
 }

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/utils/JwtUtils.java

@@ -49,7 +49,7 @@ public class JwtUtils {
                     .parseClaimsJws(token)
                     .getBody();
         }catch (Exception e){
-            logger.debug("validate is token error ", e);
+            logger.error("验证令牌错误", e);
             return null;
         }
     }