Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

三七 5 giorni fa
parent
commit
4a93a39f8a
19 ha cambiato i file con 504 aggiunte e 44 eliminazioni
  1. 0 1
      .gitignore
  2. 63 0
      fs-admin/src/main/java/com/fs/company/controller/CompanyRedPackageController.java
  3. 48 25
      fs-admin/src/main/java/com/fs/his/controller/FsUserController.java
  4. 18 0
      fs-admin/src/main/java/com/fs/his/controller/FsUserOnlineStateController.java
  5. 22 0
      fs-company/src/main/java/com/fs/company/controller/store/FsUserController.java
  6. 18 0
      fs-company/src/main/java/com/fs/company/controller/store/FsUserOnlineStateController.java
  7. 6 0
      fs-company/src/main/java/com/fs/user/FsUserAdminController.java
  8. 64 0
      fs-service/src/main/java/com/fs/company/domain/CompanyRedPackage.java
  9. 3 0
      fs-service/src/main/java/com/fs/company/mapper/CompanyMoneyLogsMapper.java
  10. 3 0
      fs-service/src/main/java/com/fs/company/service/ICompanyMoneyLogsService.java
  11. 6 0
      fs-service/src/main/java/com/fs/company/service/impl/CompanyMoneyLogsServiceImpl.java
  12. 46 9
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  13. 4 0
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageServiceImpl.java
  14. 11 0
      fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java
  15. 2 0
      fs-service/src/main/java/com/fs/his/service/impl/FsUserWxServiceImpl.java
  16. 153 0
      fs-service/src/main/resources/application-druid-fby-test.yml
  17. 17 1
      fs-service/src/main/resources/mapper/company/CompanyMoneyLogsMapper.xml
  18. 8 5
      fs-service/src/main/resources/mapper/his/FsStoreOrderMapper.xml
  19. 12 3
      fs-user-app/src/main/java/com/fs/app/controller/UserController.java

+ 0 - 1
.gitignore

@@ -8,7 +8,6 @@ target/
 #logback.xml
 application.yml
 
-
 ### STS ###
 .apt_generated
 .classpath

+ 63 - 0
fs-admin/src/main/java/com/fs/company/controller/CompanyRedPackageController.java

@@ -0,0 +1,63 @@
+package com.fs.company.controller;
+
+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.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.company.domain.*;
+import com.fs.company.service.ICompanyMoneyLogsService;
+import com.fs.company.service.ICompanyProfitLogsService;
+import com.fs.company.service.ICompanyProfitService;
+import com.fs.company.service.ICompanyService;
+import com.fs.framework.web.service.TokenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 提现Controller
+ *
+ * @author fs
+ * @date 2022-07-04
+ */
+@RestController
+@RequestMapping("/company/redPackage")
+public class CompanyRedPackageController extends BaseController
+{
+    @Autowired
+    private ICompanyMoneyLogsService moneyLogsService;
+    /**
+     * 查询提现列表
+     */
+    @PreAuthorize("@ss.hasPermi('company:redPackage:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(CompanyRedPackage companyRedPackage)
+    {
+        startPage();
+        List<CompanyRedPackage> list = moneyLogsService.selectCompanyRedPackageListVO(companyRedPackage);
+        String dateTime = companyRedPackage.getDateTime();
+        list.forEach(m -> m.setDateTime(dateTime));
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出提现列表
+     */
+    @PreAuthorize("@ss.hasPermi('company:redPackage:export')")
+    @Log(title = "提现", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(CompanyRedPackage companyRedPackage)
+    {
+        List<CompanyRedPackage> list = moneyLogsService.selectCompanyRedPackageListVO(companyRedPackage);
+        String dateTime = companyRedPackage.getDateTime();
+        list.forEach(m -> m.setDateTime(dateTime));
+        ExcelUtil<CompanyRedPackage> util = new ExcelUtil<CompanyRedPackage>(CompanyRedPackage.class);
+        return util.exportExcel(list, "红包金额记录");
+    }
+
+
+}

+ 48 - 25
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -1,9 +1,6 @@
 package com.fs.his.controller;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
@@ -93,6 +90,9 @@ public class FsUserController extends BaseController
         if (fsUser.getPhoneMk()!=null&&fsUser.getPhoneMk()!=""){
             fsUser.setPhone(encryptPhone(fsUser.getPhoneMk()));
         }
+        if(StringUtils.isNotEmpty(fsUser.getPhone())){
+            fsUser.setPhone(encryptPhone(fsUser.getPhone()));
+        }
         List<FsUserVO> list = fsUserService.selectFsUserListVO(fsUser);
         for (FsUserVO fsUserVO : list) {
             if(fsUserVO.getPhone() != null&&fsUserVO.getPhone()!=""){
@@ -271,6 +271,29 @@ public class FsUserController extends BaseController
         return ResponseResult.ok(r);
     }
 
+    @PreAuthorize("@ss.hasPermi('his:user:blacklist')")
+    @GetMapping("/blacklist")
+    @ApiOperation("黑名单")
+    public R blacklist(FsUserPageListParam param) {
+        PageInfo<FsUserPageListVO> fsUserPageListVOPageInfo = fsUserService.selectFsUserPageList(param);
+        for (FsUserPageListVO fsUserPageListVO : fsUserPageListVOPageInfo.getList()) {
+            fsUserPageListVO.setPhone(ParseUtils.parsePhone(fsUserPageListVO.getPhone()));
+        }
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("rows", fsUserPageListVOPageInfo.getList());
+        map.put("total", fsUserPageListVOPageInfo.getTotal());
+        return R.ok(map);
+    }
+
+    @PreAuthorize("@ss.hasPermi('his:user:enabledBlackUsers')")
+    @PostMapping("/enabledBlackUsers")
+    @ApiOperation("批量启用会员")
+    public ResponseResult<Boolean> enabledBlackUsers(@RequestBody List<UserProjectDTO> ids) {
+        log.debug("批量启用会员 ids: {}", JSON.toJSONString(ids));
+        Boolean r = userCompanyUserService.batchUpdateUserProjectStatus(ids, 1);
+        return ResponseResult.ok(r);
+    }
+
     @PreAuthorize("@ss.hasPermi('his:user:addPoints')")
     @PostMapping("/addPoints")
     @ApiOperation("添加积分")
@@ -284,26 +307,26 @@ public class FsUserController extends BaseController
         return userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
     }
 
-    @PutMapping("/encryptPhoneTemp")
-    @ApiOperation("临时接口")
-    public void encryptPhoneTemp(){
-        FsUser fsUser = new FsUser();
-        List<FsUser> list = fsUserService.selectFsUserList(fsUser);
-        List<FsUser> fsUserList = list.stream().peek(v -> v.setPhone(encryptPhone(v.getPhone()))).collect(Collectors.toList());
-
-        // 分批次处理,一次提交500条
-        List<List<FsUser>> batches = Lists.partition(fsUserList, 500);
-        batches.forEach(batch -> {
-            SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
-            try {
-                FsUserMapper mapper = sqlSession.getMapper(FsUserMapper.class);
-                batch.forEach(mapper::updateFsUser);
-                sqlSession.commit();
-            } finally {
-                sqlSession.close();
-            }
-        });
-
-    }
+//    @PutMapping("/encryptPhoneTemp")
+//    @ApiOperation("临时接口")
+//    public void encryptPhoneTemp(){
+//        FsUser fsUser = new FsUser();
+//        List<FsUser> list = fsUserService.selectFsUserList(fsUser);
+//        List<FsUser> fsUserList = list.stream().peek(v -> v.setPhone(encryptPhone(v.getPhone()))).collect(Collectors.toList());
+//
+//        // 分批次处理,一次提交500条
+//        List<List<FsUser>> batches = Lists.partition(fsUserList, 500);
+//        batches.forEach(batch -> {
+//            SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
+//            try {
+//                FsUserMapper mapper = sqlSession.getMapper(FsUserMapper.class);
+//                batch.forEach(mapper::updateFsUser);
+//                sqlSession.commit();
+//            } finally {
+//                sqlSession.close();
+//            }
+//        });
+//
+//    }
 
 }

+ 18 - 0
fs-admin/src/main/java/com/fs/his/controller/FsUserOnlineStateController.java

@@ -5,6 +5,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.his.domain.FsUserOnlineState;
 import com.fs.his.service.IFsUserOnlineStateService;
@@ -14,6 +15,9 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import java.util.List;
 
+import static com.fs.his.utils.PhoneUtil.decryptPhoneMk;
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 /**
  * 用户上线情况Controller
  *
@@ -35,7 +39,21 @@ public class FsUserOnlineStateController extends BaseController
     public TableDataInfo list(FsUserOnlineState fsUserOnlineState)
     {
         startPage();
+        if(StringUtils.isNotEmpty(fsUserOnlineState.getPhone())){
+            fsUserOnlineState.setPhone(encryptPhone(fsUserOnlineState.getPhone()));
+        }
         List<FsUserOnlineState> list = fsUserOnlineStateService.selectFsUserOnlineStateList(fsUserOnlineState);
+        if(!list.isEmpty()){
+            for (FsUserOnlineState userOnlineState : list) {
+                if(userOnlineState.getPhone() != null && userOnlineState.getPhone() != ""){
+                    if (userOnlineState.getPhone().length()>11){
+                        userOnlineState.setPhone(decryptPhoneMk(userOnlineState.getPhone()));
+                    }else {
+                        userOnlineState.setPhone(userOnlineState.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+                    }
+                }
+            }
+        }
         return getDataTable(list);
     }
 

+ 22 - 0
fs-company/src/main/java/com/fs/company/controller/store/FsUserController.java

@@ -259,4 +259,26 @@ public class FsUserController extends BaseController
         return ResponseResult.ok(r);
     }
 
+    @PreAuthorize("@ss.hasPermi('users:user:blacklist')")
+    @GetMapping("/blacklist")
+    @ApiOperation("黑名单")
+    public R blacklist(FsUserPageListParam param) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        param.setUserId(loginUser.getUser().getUserId());
+        PageInfo<FsUserPageListVO> fsUserPageListVOPageInfo = fsUserService.selectFsUserPageList(param);
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("rows", fsUserPageListVOPageInfo.getList());
+        map.put("total", fsUserPageListVOPageInfo.getTotal());
+        return R.ok(map);
+    }
+
+    @PreAuthorize("@ss.hasPermi('users:user:enabledBlackUsers')")
+    @PostMapping("/enabledBlackUsers")
+    @ApiOperation("批量启用会员")
+    public ResponseResult<Boolean> enabledBlackUsers(@RequestBody List<UserProjectDTO> ids) {
+        log.debug("批量启用会员 ids: {}", JSON.toJSONString(ids));
+        Boolean r = userCompanyUserService.batchUpdateUserProjectStatus(ids, 1);
+        return ResponseResult.ok(r);
+    }
+
 }

+ 18 - 0
fs-company/src/main/java/com/fs/company/controller/store/FsUserOnlineStateController.java

@@ -6,6 +6,7 @@ import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
@@ -17,6 +18,9 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
+import static com.fs.his.utils.PhoneUtil.decryptPhoneMk;
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 /**
  * 用户上线情况Controller
  *
@@ -48,7 +52,21 @@ public class FsUserOnlineStateController extends BaseController
         } else{
             fsUserOnlineState.setCompanyUserId( loginUser.getUser().getUserId());
         }
+        if(StringUtils.isNotEmpty(fsUserOnlineState.getPhone())){
+            fsUserOnlineState.setPhone(encryptPhone(fsUserOnlineState.getPhone()));
+        }
         List<FsUserOnlineState> list = fsUserOnlineStateService.selectFsUserOnlineStateList(fsUserOnlineState);
+        if(!list.isEmpty()){
+            for (FsUserOnlineState userOnlineState : list) {
+                if(userOnlineState.getPhone() != null && userOnlineState.getPhone() != ""){
+                    if (userOnlineState.getPhone().length()>11){
+                        userOnlineState.setPhone(decryptPhoneMk(userOnlineState.getPhone()));
+                    }else {
+                        userOnlineState.setPhone(userOnlineState.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+                    }
+                }
+            }
+        }
         return getDataTable(list);
     }
 

+ 6 - 0
fs-company/src/main/java/com/fs/user/FsUserAdminController.java

@@ -8,6 +8,7 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.company.cache.ICompanyUserCacheService;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
@@ -29,6 +30,8 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 @Api(tags = "会员管理接口")
 @RestController
 @Slf4j
@@ -67,6 +70,9 @@ public class FsUserAdminController extends BaseController {
 //        if(param.getCompanyUserId() == null) {
 //            throw new IllegalArgumentException("当前销售不存在!");
 //        }
+        if(StringUtils.isNotEmpty(param.getPhone())){
+            param.setPhone(encryptPhone(param.getPhone()));
+        }
         return fsUserService.selectFsUserPageListNew(param);
     }
 

+ 64 - 0
fs-service/src/main/java/com/fs/company/domain/CompanyRedPackage.java

@@ -0,0 +1,64 @@
+package com.fs.company.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+
+import java.util.Date;
+
+public class CompanyRedPackage extends BaseEntity {
+
+    private Long companyId;
+
+    @Excel(name = "公司名称")
+    private String companyName;
+
+    @Excel(name = "销售名称")
+    private String nickName;
+
+    @Excel(name = "红包金额")
+    private Double totalAmount;
+
+    @Excel(name = "统计时间")
+    private String dateTime;
+
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public Double getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(Double totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public String getDateTime() {
+        return dateTime;
+    }
+
+    public void setDateTime(String dateTime) {
+        this.dateTime = dateTime;
+    }
+}

+ 3 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyMoneyLogsMapper.java

@@ -3,6 +3,7 @@ package com.fs.company.mapper;
 import java.math.BigDecimal;
 import java.util.List;
 import com.fs.company.domain.CompanyMoneyLogs;
+import com.fs.company.domain.CompanyRedPackage;
 import com.fs.company.param.CompanyMoneyLogsParam;
 import com.fs.company.param.CompanyStoreOrderMoneyLogsListParam;
 import com.fs.company.vo.*;
@@ -320,4 +321,6 @@ public interface CompanyMoneyLogsMapper
             "</if>" +
             "</script>"})
     Integer selectCompanyMoneyLogsExport1Counts(@Param("maps")FsCompanyMoneyLogsExportParam param);
+
+    List<CompanyRedPackage> selectCompanyRedPackageListVO(CompanyRedPackage companyRedPackage);
 }

+ 3 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyMoneyLogsService.java

@@ -3,6 +3,7 @@ package com.fs.company.service;
 import java.math.BigDecimal;
 import java.util.List;
 import com.fs.company.domain.CompanyMoneyLogs;
+import com.fs.company.domain.CompanyRedPackage;
 import com.fs.company.param.CompanyMoneyLogsParam;
 import com.fs.company.param.CompanyStoreOrderMoneyLogsListParam;
 import com.fs.company.vo.*;
@@ -91,4 +92,6 @@ public interface ICompanyMoneyLogsService
     Integer selectCompanyMoneyLogsExport1Counts(FsCompanyMoneyLogsExportParam param);
 
     void exportData(FsCompanyMoneyLogsExportParam param);
+
+    List<CompanyRedPackage> selectCompanyRedPackageListVO(CompanyRedPackage companyRedPackage);
 }

+ 6 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyMoneyLogsServiceImpl.java

@@ -13,6 +13,7 @@ import com.fs.common.utils.SecurityUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.company.domain.CompanyDept;
+import com.fs.company.domain.CompanyRedPackage;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.param.CompanyMoneyLogsParam;
 import com.fs.company.param.CompanyStoreOrderMoneyLogsListParam;
@@ -246,4 +247,9 @@ public class CompanyMoneyLogsServiceImpl implements ICompanyMoneyLogsService
             fsExportTaskMapper.updateFsExportTask(task);
         }
     }
+
+    @Override
+    public List<CompanyRedPackage> selectCompanyRedPackageListVO(CompanyRedPackage companyRedPackage) {
+        return companyMoneyLogsMapper.selectCompanyRedPackageListVO(companyRedPackage);
+    }
 }

+ 46 - 9
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -991,8 +991,12 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         if (param.getSource() == 2) {
             //处理多小程序问题
             FsUserWx fsUserWx = fsUserWxService.selectByAppIdAndUserId(param.getAppId(),user.getUserId(),1);
-            if (fsUserWx ==null || fsUserWx.getOpenId()==null){
-                packetParam.setOpenId(user.getCourseMaOpenId());
+            if (fsUserWx ==null){
+                try {
+                    handleFsUserWx(user,param.getAppId());
+                }catch (Exception e){
+                    logger.error("zyp \n 【更新或插入用户与小程序的绑定关系失败】:{}", user.getUserId());
+                }
             }else {
                 packetParam.setOpenId(fsUserWx.getOpenId());
             }
@@ -1101,6 +1105,31 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
     }
 
+
+    private void handleFsUserWx(FsUser user, String appId) {
+        // 尝试更新
+        boolean updated = fsUserWxService.lambdaUpdate()
+                .eq(FsUserWx::getFsUserId, user.getUserId())
+                .eq(FsUserWx::getAppId,appId )
+                .eq(FsUserWx::getOpenId, user.getMaOpenId())
+//                .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
+                .set(FsUserWx::getUpdateTime, new Date())
+                .update();
+
+        // 如果更新失败(记录不存在),则插入
+        if (!updated) {
+            FsUserWx fsUserWx = new FsUserWx();
+            fsUserWx.setType(1);
+            fsUserWx.setFsUserId(user.getUserId());
+            fsUserWx.setAppId(appId);
+            fsUserWx.setOpenId(user.getMaOpenId());
+//            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
+            fsUserWx.setCreateTime(new Date());
+            fsUserWx.setUpdateTime(new Date());
+            fsUserWxService.save(fsUserWx);
+        }
+    }
+
     /**
      * 发放红包奖励
      *
@@ -1144,18 +1173,26 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         // 来源是小程序切换openId
         if (param.getSource() == 2) {
             //处理多小程序问题
-            Company company = companyMapper.selectCompanyById(param.getCompanyId());
-            if (company.getCourseMiniAppId()==null){
-                return R.error("销售公司参数错误,未绑定小程序");
-            }
-            FsUserWx fsUserWx = fsUserWxService.selectByAppIdAndUserId(company.getCourseMiniAppId(),user.getUserId(),1);
+//            Company company = companyMapper.selectCompanyById(param.getCompanyId());
+//            if (company.getCourseMiniAppId()==null){
+//                return R.error("销售公司参数错误,未绑定小程序");
+//            }
+            FsUserWx fsUserWx = fsUserWxService.selectByAppIdAndUserId(param.getAppId(),user.getUserId(),1);
             if (fsUserWx ==null || fsUserWx.getOpenId()==null){
-                return R.error("小程序openId参数缺失");
+                packetParam.setOpenId(user.getCourseMaOpenId());
+                try {
+                    handleFsUserWx(user,param.getAppId());
+                }catch (Exception e){
+                    logger.error("zyp \n 【更新或插入用户与小程序的绑定关系失败】:{}", user.getUserId());
+                }
+
+            }else {
+                packetParam.setOpenId(fsUserWx.getOpenId());
             }
 
             System.out.println("小程序id"+user.getCourseMaOpenId());
             //查出公司绑定openid并赋值
-            packetParam.setOpenId(fsUserWx.getOpenId());
+//            packetParam.setOpenId(fsUserWx.getOpenId());
         }
         packetParam.setAmount(amount);
         packetParam.setSource(param.getSource());

+ 4 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPackageServiceImpl.java

@@ -167,6 +167,10 @@ public class FsPackageServiceImpl implements IFsPackageService {
 
     @Override
     public List<FsPackageListVO> selectFsPackageListVO(FsPackageParam fsPackage) {
+        Integer privateType = fsPackage.getPrivateType();
+        if (privateType != null) {
+            fsPackage.setIsShow(0);
+        }
         return fsPackageMapper.selectFsPackageListVO(fsPackage);
     }
 

+ 11 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -81,6 +81,7 @@ import com.fs.his.service.IFsUserService;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import static com.fs.his.utils.PhoneUtil.decryptPhoneMk;
 import static com.fs.his.utils.PhoneUtil.encryptPhone;
 
 /**
@@ -686,6 +687,16 @@ public class FsUserServiceImpl implements IFsUserService
 //                    item.setIsRepeat(isRepeat);
 //                }
             }
+
+            // 解密
+            if(item.getPhone() != null && item.getPhone() != ""){
+                if (item.getPhone().length()>11){
+                    item.setPhone(decryptPhoneMk(item.getPhone()));
+                }else {
+                    item.setPhone(item.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+                }
+            }
+
         }
 
         TableDataInfo rspData = new TableDataInfo();

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

@@ -28,6 +28,8 @@ public class FsUserWxServiceImpl extends ServiceImpl<FsUserWxMapper, FsUserWx> i
                         .eq("app_id", appId)
                         .eq("fs_user_id", userId)
                         .eq("type", type)
+                        .orderByDesc("id")
+                        .last("LIMIT 1")
         );
     }
 }

+ 153 - 0
fs-service/src/main/resources/application-druid-fby-test.yml

@@ -0,0 +1,153 @@
+# 数据源配置
+spring:
+    profiles:
+        include: config-druid-fby,common
+    # redis 配置
+    redis:
+        # 地址
+        host: 127.0.0.1
+        # 端口,默认为6379
+        port: 6379
+        # 数据库索引
+        database: 0
+        # 密码
+        password:
+        # 连接超时时间
+        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://120.46.11.55:2345/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Ylrztek250218!3@.
+                # 从库数据源
+                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://120.46.11.55:2345/sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Ylrztek250218!3@.
+                # 初始连接数
+                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

+ 17 - 1
fs-service/src/main/resources/mapper/company/CompanyMoneyLogsMapper.xml

@@ -31,7 +31,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectCompanyMoneyLogsVo"/>
         where logs_id = #{logsId}
     </select>
-        
+    <select id="selectCompanyRedPackageListVO" resultType="com.fs.company.domain.CompanyRedPackage">
+        select sum(l.amount) as totalAmount,u.nick_name as nickName,c.company_name as companyName
+        from fs_course_red_packet_log l
+        LEFT JOIN company_user u on l.company_user_id =u.user_id
+        left join company c on l.company_id = c.company_id
+        where
+        u.user_id is not null and l.status=1
+        <if test="companyId != null">
+            and l.company_id = #{companyId}
+        </if>
+        <if test="dateTime != null">
+            and DATE_FORMAT(l.create_time,'%Y-%m-%d') like concat(#{dateTime}, '%')
+        </if>
+        GROUP BY l.company_user_id
+        order by c.company_id,u.user_id
+    </select>
+
     <insert id="insertCompanyMoneyLogs" parameterType="CompanyMoneyLogs" useGeneratedKeys="true" keyProperty="logsId">
         insert into company_money_logs
         <trim prefix="(" suffix=")" suffixOverrides=",">

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

@@ -892,7 +892,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
 
         </where>
-
+        ${maps.params.dataScope}
         ORDER BY
 
         <if test="maps.sortField == 'companyUserName'">
@@ -913,7 +913,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="maps.sortField == null or maps.sortField == ''">
             so.order_id desc
         </if>
-        ${maps.params.dataScope}
+
     </select>
     <select id="selectFsStoreOrderListVOByErpAccount" resultType="com.fs.his.vo.FsStoreOrderListVO">
         select so.*,st.store_name,us.nick_name,us.phone,d.doctor_name,p.patient_name,p.prescribe_code,c.company_name,
@@ -1098,12 +1098,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="maps.erpPhoneNumber != null and maps.erpPhoneNumber != ''">
                 and so.erp_phone like concat(#{maps.erpPhoneNumber},'%')
             </if>
-            <if test="maps.erpAccount != null and maps.erpAccount != ''">
+            <if test="maps.erpAccount != null and maps.erpAccount != '未分拣' and maps.erpAccount != ''">
                 and df.login_account like #{maps.erpAccount}
             </if>
+            <if test="maps.erpAccount == '未分拣'">
+                and ( df.login_account is null or df.login_account like '')
+            </if>
 
         </where>
-
+        ${maps.params.dataScope}
         ORDER BY
 
         <if test="maps.sortField == 'companyUserName'">
@@ -1124,7 +1127,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="maps.sortField == null or maps.sortField == ''">
             so.order_id desc
         </if>
-        ${maps.params.dataScope}
+
     </select>
     <select id="selectFsStoreOrderByFsUserId" resultMap="FsStoreOrderResult">
         <include refid="selectFsStoreOrderVo"/>

+ 12 - 3
fs-user-app/src/main/java/com/fs/app/controller/UserController.java

@@ -129,11 +129,20 @@ public class UserController extends  AppBaseController {
         }
     }
 
-    @Login
     @ApiOperation("检测是否登录")
     @GetMapping("/checkLogin")
-    public R checkLogin(){
-        return R.ok("认证成功");
+    public R checkLogin(HttpServletRequest request){
+        if(StringUtils.isEmpty(getUserId())){
+            //未登录
+            return R.error("未登录");
+        }
+        else{
+            //登录
+            String token = jwtUtils.generateToken(Long.parseLong(getUserId()));
+            Map<String,Object> map=new HashMap<>();
+            map.put("token",token);
+            return R.ok("认证成功").put("userId",getUserId()).put("token",token);
+        }
     }
 
     @Login