Forráskód Böngészése

Merge branch 'refs/heads/master' into ScrmStores

chenguo 1 napja
szülő
commit
1c314a23ef
28 módosított fájl, 233 hozzáadás és 62 törlés
  1. 2 2
      fs-admin/src/main/java/com/fs/api/controller/IndexStatisticsController.java
  2. 1 1
      fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderController.java
  3. 22 0
      fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java
  4. 26 4
      fs-company/src/main/java/com/fs/company/controller/company/FsDoctorController.java
  5. 1 1
      fs-company/src/main/java/com/fs/company/controller/store/FsUserController.java
  6. 3 0
      fs-service/src/main/java/com/fs/company/domain/CompanyUser.java
  7. 3 0
      fs-service/src/main/java/com/fs/company/mapper/CompanyUserMapper.java
  8. 5 0
      fs-service/src/main/java/com/fs/company/service/ICompanyUserService.java
  9. 42 10
      fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java
  10. 8 2
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java
  11. 7 0
      fs-service/src/main/java/com/fs/his/mapper/FsDoctorMapper.java
  12. 1 1
      fs-service/src/main/java/com/fs/his/param/FsPackageOrderDoPayParam.java
  13. 2 0
      fs-service/src/main/java/com/fs/his/service/IFsDoctorService.java
  14. 5 0
      fs-service/src/main/java/com/fs/his/service/IFsUserService.java
  15. 5 0
      fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java
  16. 16 22
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java
  17. 35 0
      fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java
  18. 1 0
      fs-service/src/main/java/com/fs/huifuPay/domain/HuiFuCreateOrder.java
  19. 7 2
      fs-service/src/main/java/com/fs/huifuPay/service/impl/HuiFuServiceImpl.java
  20. 1 1
      fs-service/src/main/java/com/fs/qw/mapper/QwUserMapper.java
  21. 1 0
      fs-service/src/main/java/com/fs/qw/vo/QwUserVO.java
  22. 2 2
      fs-service/src/main/resources/application-config-druid-hyt.yml
  23. 2 0
      fs-service/src/main/resources/application-druid-hyt-test.yml
  24. 6 0
      fs-service/src/main/resources/application-druid-lmjy-test.yml
  25. 6 0
      fs-service/src/main/resources/application-druid-lmjy.yml
  26. 2 0
      fs-service/src/main/resources/mapper/company/CompanyUserMapper.xml
  27. 15 14
      fs-service/src/main/resources/mapper/his/FsUserMapper.xml
  28. 6 0
      fs-user-app/src/main/java/com/fs/app/controller/WxUserController.java

+ 2 - 2
fs-admin/src/main/java/com/fs/api/controller/IndexStatisticsController.java

@@ -64,10 +64,10 @@ public class IndexStatisticsController {
     @GetMapping("/trafficLog")
     public R getTrafficLog(){
         TrafficLogDTO trafficLogDTO = redisCache.getCacheObject(DATA_OVERVIEW_TRAFFIC_LOG);
-        if(trafficLogDTO == null) {
+        SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("redPacket.Traffic.config");
+        if(trafficLogDTO == null || sysConfig == null) {
             return null;
         }
-        SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("redPacket.Traffic.config");
         String configValue = sysConfig.getConfigValue();
         trafficLogDTO.setTraffic(configValue);
         return R.ok().put("data",trafficLogDTO);

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

@@ -656,7 +656,7 @@ public class FsStoreOrderController extends BaseController
             if (param.getUserPhoneMk() != null && !param.getUserPhoneMk().isEmpty()) {
                 param.setUserPhone(encryptPhone(param.getUserPhoneMk()));
             }
-            List<FsStoreOrderListVO> list = fsStoreOrderService.selectFsStoreOrderListVO(param);
+            List<FsStoreOrderListVO> list = fsStoreOrderService.selectFsStoreOrderListVOByErpAccount(param);
             orderIds = list.stream().map(FsStoreOrderListVO::getOrderId).collect(Collectors.toList());
         }
         if (orderIds.isEmpty()){

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

@@ -18,6 +18,7 @@ import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.company.domain.*;
 import com.fs.company.mapper.CompanyUserDelayTimeMapper;
 import com.fs.company.param.CompanyUserAreaParam;
+import com.fs.company.param.CompanyUserBindDoctorParam;
 import com.fs.company.param.CompanyUserCodeParam;
 import com.fs.company.param.CompanyUserQwParam;
 import com.fs.company.service.*;
@@ -517,4 +518,25 @@ public class CompanyUserController extends BaseController
         String url = companyUserService.uploadQrCode(file, userId);
         return R.ok().put("url", url);
     }
+
+
+    /**
+     * 销售解除绑定医生
+     */
+    @PreAuthorize("@ss.hasPermi('qw:companyUser:unBindDoctorId')")
+    @Log(title = "销售解除绑定医生", businessType = BusinessType.UPDATE)
+    @GetMapping("/unBindDoctorId/{userId}")
+    public R bindDoctorId(@PathVariable("userId") Long userId){
+        return companyUserService.unBindDoctor(userId);
+    }
+
+    /**
+     * 销售绑定医生
+     */
+    @PreAuthorize("@ss.hasPermi('qw:companyUser:bindDoctorId')")
+    @Log(title = "销售绑定医生", businessType = BusinessType.UPDATE)
+    @PostMapping("/bindDoctorId")
+    public R unBindDoctorId(@RequestBody CompanyUser companyUser){
+        return companyUserService.bindDoctor(companyUser);
+    }
 }

+ 26 - 4
fs-company/src/main/java/com/fs/company/controller/company/FsDoctorController.java

@@ -1,8 +1,11 @@
 package com.fs.company.controller.company;
 
+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.enums.BusinessType;
 import com.fs.his.param.FsDoctorParam;
 import com.fs.his.service.IFsDoctorService;
 import com.fs.his.utils.RedisCacheUtil;
@@ -11,14 +14,15 @@ import com.fs.his.vo.FsDoctorVO;
 import com.fs.his.vo.OptionsVO;
 import com.fs.his.vo.UserVo;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Base64;
 import java.util.List;
 
+import static com.fs.his.utils.PhoneUtil.decryptAutoPhoneMk;
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 /**
  * 医生管理Controller
  *
@@ -121,6 +125,24 @@ public class FsDoctorController extends BaseController
     }
 
 
+    @GetMapping("/getDocVoList")
+    public TableDataInfo getDocVoList(FsDoctorParam param) {
+        startPage();
+        List<FsDoctorVO> list = fsDoctorService.selectDocVOByNameAndPhone(param);
+        if (list == null || list.isEmpty()) {
+            param.setMobile(encryptPhone(param.getMobile()));
+            list = fsDoctorService.selectDocVOByNameAndPhone(param);
+        }
+
+        if (list != null) {
+            list.forEach( item -> {
+                if (item.getMobile() != null)
+                    item.setMobile(decryptAutoPhoneMk(item.getMobile()));
+            });
+        }
+        return getDataTable(list);
+    }
+
 
 
 }

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

@@ -67,7 +67,7 @@ public class FsUserController extends BaseController
         startPage();
         LoginUser loginUser = SecurityUtils.getLoginUser();
         fsUser.setCompanyId(loginUser.getCompany().getCompanyId());
-        if(fsUser.getPhoneMk()!=null&&fsUser.getPhone()!=""){
+        if(fsUser.getPhoneMk()!=null&&StringUtils.isBlank(fsUser.getPhone())){
             fsUser.setPhone(encryptPhone(fsUser.getPhoneMk()));
         }
 

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

@@ -87,6 +87,9 @@ public class CompanyUser extends BaseEntity
     private String qwUserId;
     private Integer qwStatus;
 
+    /** 医生id */
+    private Long doctorId;
+
     public String getIdCard() {
         return idCard;
     }

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

@@ -312,4 +312,7 @@ public interface CompanyUserMapper
     int insertQwIpadTotal(List<QwIpadTotalVo> qwIpadTotalVos);
 
     void uploadQrCode(@Param("userId") String userId, @Param("url") String url);
+
+    @Update("update company_user set doctor_id = null where user_id = #{userId}")
+    public int unBindDoctorId(@Param("userId")Long userId);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyUserService.java

@@ -3,6 +3,7 @@ package com.fs.company.service;
 import com.fs.common.core.domain.R;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.param.CompanyUserAreaParam;
+import com.fs.company.param.CompanyUserBindDoctorParam;
 import com.fs.company.param.CompanyUserCodeParam;
 import com.fs.company.param.CompanyUserQwParam;
 import com.fs.company.vo.*;
@@ -228,4 +229,8 @@ public interface ICompanyUserService {
     int insertQwIpadTotal(List<QwIpadTotalVo> qwIpadTotalVos);
 
     String uploadQrCode(MultipartFile file,String userId) throws IOException;
+
+    R bindDoctor(CompanyUser param);
+
+    R unBindDoctor(Long userId);
 }

+ 42 - 10
fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java

@@ -16,6 +16,7 @@ import com.fs.common.utils.*;
 import com.fs.company.domain.*;
 import com.fs.company.mapper.*;
 import com.fs.company.param.CompanyUserAreaParam;
+import com.fs.company.param.CompanyUserBindDoctorParam;
 import com.fs.company.param.CompanyUserCodeParam;
 import com.fs.company.param.CompanyUserQwParam;
 import com.fs.company.service.ICompanyService;
@@ -651,6 +652,7 @@ public class CompanyUserServiceImpl implements ICompanyUserService
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void auditUsers(List<Long> userIds,Long companyId) {
         if (userIds.isEmpty()) {
             return;
@@ -677,10 +679,14 @@ public class CompanyUserServiceImpl implements ICompanyUserService
             companyUserList.stream().forEach(c->{
                 //判断角色是否为空
                 if(ObjectUtil.isNotNull(role)){
-                    CompanyUserRole userRole=new CompanyUserRole();
-                    userRole.setRoleId(role.getRoleId());
-                    userRole.setUserId(c.getUserId());
-                    companyUserRoleList.add(userRole);
+                    //判断该用户角色是否存在
+                    CompanyUserRole companyUserRole = userRoleMapper.selectCompanyUserRoleById(c.getUserId());
+                    if(companyUserRole == null || !Objects.equals(companyUserRole.getRoleId(), role.getRoleId())){
+                        CompanyUserRole userRole=new CompanyUserRole();
+                        userRole.setRoleId(role.getRoleId());
+                        userRole.setUserId(c.getUserId());
+                        companyUserRoleList.add(userRole);
+                    }
                 }
 
                 //判断部门
@@ -690,13 +696,16 @@ public class CompanyUserServiceImpl implements ICompanyUserService
 
                 //判断岗位
                 if(ObjectUtil.isNotNull(companyPost)){
-                    //添加用户岗位表
-                    CompanyUserPost userPost=new CompanyUserPost();
-                    userPost.setPostId(companyPost.getPostId());
-                    userPost.setUserId(c.getUserId());
-                    companyUserPosts.add(userPost);
+                    //判断该岗位是否存在
+                    CompanyUserPost companyUserPost = userPostMapper.selectCompanyUserPostById(c.getUserId());
+                    if(companyUserPost == null || !Objects.equals(companyUserPost.getPostId(), companyPost.getPostId())){
+                        //添加用户岗位表
+                        CompanyUserPost userPost=new CompanyUserPost();
+                        userPost.setPostId(companyPost.getPostId());
+                        userPost.setUserId(c.getUserId());
+                        companyUserPosts.add(userPost);
+                    }
                 }
-
             });
 
             //批量插入角色用户中间表
@@ -779,4 +788,27 @@ public class CompanyUserServiceImpl implements ICompanyUserService
         companyUserMapper.uploadQrCode(userId,url);
         return url;
     }
+
+    @Override
+    public R bindDoctor(CompanyUser companyUser) {
+        CompanyUser map = new CompanyUser();
+        map.setUserId(companyUser.getUserId());
+        map.setDoctorId(companyUser.getDoctorId());
+        int i = companyUserMapper.updateCompanyUser(map);
+        if (i > 0) {
+            return R.ok();
+        } else {
+            return R.error();
+        }
+    }
+
+    @Override
+    public R unBindDoctor(Long userId) {
+        int i = companyUserMapper.unBindDoctorId(userId);
+        if (i > 0) {
+            return R.ok();
+        } else {
+            return R.error();
+        }
+    }
 }

+ 8 - 2
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -3,10 +3,8 @@ package com.fs.course.service.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.ServiceException;
-import com.fs.common.utils.StringUtils;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.domain.FsUserCoursePeriodDays;
 import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
@@ -107,6 +105,14 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
         // 1. 查询原始数据
         fsUserCoursePeriod.setUpdateTime(LocalDateTime.now());
 
+        if(LocalDate.now().isBefore(fsUserCoursePeriod.getPeriodStartingTime())){
+            fsUserCoursePeriod.setPeriodStatus(1L);
+        } else if(LocalDate.now().isAfter(fsUserCoursePeriod.getPeriodEndTime())){
+            fsUserCoursePeriod.setPeriodStatus(3L);
+        } else{
+            fsUserCoursePeriod.setPeriodStatus(2L);
+        }
+
         FsUserCoursePeriod fsUserCoursePeriod1 = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(fsUserCoursePeriod.getPeriodId());
         int flag = fsUserCoursePeriodMapper.updateFsUserCoursePeriod(fsUserCoursePeriod);
 

+ 7 - 0
fs-service/src/main/java/com/fs/his/mapper/FsDoctorMapper.java

@@ -202,4 +202,11 @@ public interface FsDoctorMapper
     List<UserVo> selectUserDocVoListByCompany(Long companyId);
 
     String selectDoctorNameByIds(List<Long> doctorIds);
+    @Select({"<script> " +
+            "select doctor_id,doctor_name, mobile FROM fs_doctor where doctor_type = 1 "+
+            "  <if test=\"param.doctorName != null  and param.doctorName != ''\"> and doctor_name like concat( #{param.doctorName}, '%')</if>\n" +
+            "            <if test=\"param.mobile != null  and param.mobile != ''\"> and mobile =#{param.mobile}</if>\n" +
+            "order by doctor_id desc"+
+            "</script>"})
+    List<FsDoctorVO> selectDocVOByNameAndPhone(@Param("param") FsDoctorParam param);
 }

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

@@ -11,5 +11,5 @@ public class FsPackageOrderDoPayParam implements Serializable {
     Long orderId;
     Long userId;
 
-    private String appId;
+    private String appId;//小程序id
 }

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

@@ -107,4 +107,6 @@ public interface IFsDoctorService
     List<UserVo> selectUserDocVoListByCompany(Long companyId);
 
     String selectDoctorByIds(String doctorId);
+
+    List<FsDoctorVO> selectDocVOByNameAndPhone(FsDoctorParam param);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/IFsUserService.java

@@ -4,9 +4,11 @@ import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
 import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.param.LoginMaWxParam;
 import com.fs.course.param.CourseAnalysisParam;
 import com.fs.course.param.newfs.FsUserCourseBeMemberParam;
 import com.fs.course.vo.newfs.FsCourseAnalysisVO;
@@ -20,6 +22,7 @@ import com.fs.his.vo.FsUserExportListVO;
 import com.fs.his.vo.FsUserFollowDoctorVO;
 import com.fs.his.vo.UserVo;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hisStore.domain.FsUserScrm;
 import com.fs.hisStore.vo.FsCompanyUserListQueryVO;
 import com.fs.qw.dto.FsUserTransferParamDTO;
 import com.fs.qw.param.QwFsUserParam;
@@ -214,4 +217,6 @@ public interface IFsUserService
     List<FsCompanyUserListQueryVO> selectFsCompanyUserListQuery(FsUser fsUser);
 
     List<FsUser> getUserListLimit(FsUser fsUser);
+
+    void handleFsUserWx(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java

@@ -462,6 +462,11 @@ public class FsDoctorServiceImpl implements IFsDoctorService
         return fsDoctorMapper.selectDoctorNameByIds(doctorIds);
     }
 
+    @Override
+    public List<FsDoctorVO> selectDocVOByNameAndPhone(FsDoctorParam param) {
+        return fsDoctorMapper.selectDocVOByNameAndPhone(param);
+    }
+
     public static BufferedImage convertCircular(BufferedImage bi1) throws IOException {
         // 透明底的图片
         BufferedImage bi2 = new BufferedImage(bi1.getWidth(), bi1.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);

+ 16 - 22
fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java

@@ -879,37 +879,30 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
             return R.error("非法操作");
         }
 
-//        FsUser user=userService.selectFsUserByUserId(param.getUserId());
-//
-//        String json = configService.selectConfigByKey("his.pay");
-//        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
-//
-//        String openId = Objects.isNull(user) ? "" : user.getMaOpenId();
-//        if (StringUtils.isBlank(openId)){
-//            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
-//                    .eq(FsUserWx::getFsUserId, param.getUserId())
-//                    .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
-//            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
-//            if (Objects.nonNull(fsUserWx)){
-//                openId = fsUserWx.getOpenId();
-//            }
-//        }
-        FsUser user = userService.selectFsUserByUserId(param.getUserId());
-        //在线支付
+        FsUser user=userService.selectFsUserByUserId(param.getUserId());
+
         String json = configService.selectConfigByKey("his.pay");
         PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
-        String openId = "";
-        if (StringUtils.isNotEmpty(param.getAppId())) {
-            FsUserWx fsUserWx = userWxService.selectByAppIdAndUserId(param.getAppId(), param.getUserId(), 1);
+
+        //金牛多小程序支付
+        String openId = null;
+        String appId = param.getAppId();
+        if (StringUtils.isNotBlank(appId)) {
+            //查询fs_user_wx的openId
+            Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                    .eq(FsUserWx::getFsUserId, param.getUserId())
+                    .eq(FsUserWx::getAppId, appId);
+            FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
             if (fsUserWx != null) {
                 openId = fsUserWx.getOpenId();
             }
         } else {
+            appId = payConfigDTO.getAppId();
             openId = Objects.isNull(user) ? "" : user.getMaOpenId();
             if (StringUtils.isBlank(openId)){
                 Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
                         .eq(FsUserWx::getFsUserId, param.getUserId())
-                        .eq(FsUserWx::getAppId, payConfigDTO.getAppId());
+                        .eq(FsUserWx::getAppId, appId);
                 FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
                 if (Objects.nonNull(fsUserWx)){
                     openId = fsUserWx.getOpenId();
@@ -945,7 +938,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         WxPayConfig payConfig = new WxPayConfig();
                         SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.pay");
                         FsPayConfig fsPayConfig = new Gson().fromJson(sysConfig.getConfigValue(), FsPayConfig.class);
-                        payConfig.setAppId(fsPayConfig.getAppId());
+                        payConfig.setAppId(appId);
                         payConfig.setMchId(fsPayConfig.getWxMchId());
                         payConfig.setMchKey(fsPayConfig.getWxMchKey());
                         payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
@@ -1023,6 +1016,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         o.setReqSeqId("package-"+storePayment.getPayCode());
                         o.setTransAmt(storePayment.getPayMoney().toString());
                         o.setGoodsDesc("套餐包订单支付");
+                        o.setAppId(appId);
                         HuifuCreateOrderResult result = huiFuService.createOrder(o);
                         logger.info("创建汇付支付:"+result);
                         FsStorePayment mt=new FsStorePayment();

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

@@ -9,6 +9,7 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -18,6 +19,7 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
 import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.param.LoginMaWxParam;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.DictUtils;
 import com.fs.common.utils.ParseUtils;
@@ -48,12 +50,14 @@ import com.fs.his.param.FsUserAddIntegralTemplateParam;
 import com.fs.his.param.FsUserParam;
 import com.fs.his.service.IFsUserIntegralLogsService;
 import com.fs.his.service.IFsUserProjectTagService;
+import com.fs.his.service.IFsUserWxService;
 import com.fs.his.vo.FsUserVO;
 import com.fs.his.vo.FsUserExportListVO;
 import com.fs.his.vo.FsUserFollowDoctorVO;
 import com.fs.his.vo.UserVo;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsUserBillScrm;
+import com.fs.hisStore.domain.FsUserScrm;
 import com.fs.hisStore.enums.BillDetailEnum;
 import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
 import com.fs.hisStore.service.IFsUserBillScrmService;
@@ -162,6 +166,9 @@ public class FsUserServiceImpl implements IFsUserService
     @Autowired
     private FsStoreOrderScrmMapper storeOrderMapper;
 
+    @Autowired
+    private IFsUserWxService fsUserWxService;
+
 
     /**
      * 查询用户
@@ -1235,4 +1242,32 @@ public class FsUserServiceImpl implements IFsUserService
         return fsUserMapper.selectFsUserListLimit(fsUser);
     }
 
+    @Override
+    public void handleFsUserWx(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session) {
+        if (user == null) return;
+        // 尝试更新
+        boolean updated = fsUserWxService.lambdaUpdate()
+                .eq(FsUserWx::getFsUserId, user.getUserId())
+                .eq(FsUserWx::getAppId, param.getAppId())
+                .eq(FsUserWx::getOpenId, session.getOpenid())
+                .set(FsUserWx::getCompanyId, param.getCompanyId())
+                .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.setCompanyId(param.getCompanyId());
+            fsUserWx.setAppId(param.getAppId());
+            fsUserWx.setOpenId(session.getOpenid());
+            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
+            fsUserWx.setCreateTime(new Date());
+            fsUserWx.setUpdateTime(new Date());
+            fsUserWxService.save(fsUserWx);
+        }
+    }
+
 }

+ 1 - 0
fs-service/src/main/java/com/fs/huifuPay/domain/HuiFuCreateOrder.java

@@ -19,4 +19,5 @@ public class HuiFuCreateOrder {
     String transAmt;
     String goodsDesc;
     String openid;
+    String appId; //多小程序支付
 }

+ 7 - 2
fs-service/src/main/java/com/fs/huifuPay/service/impl/HuiFuServiceImpl.java

@@ -3,6 +3,7 @@ package com.fs.huifuPay.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.exception.CustomException;
+import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.spring.SpringUtils;
 import com.fs.his.domain.FsPayConfig;
 import com.fs.huifuPay.domain.*;
@@ -58,10 +59,14 @@ public class HuiFuServiceImpl implements HuiFuService {
             extendInfoMap.put("pay_scene", "02");
             // 传入分帐遇到优惠的处理规则
             extendInfoMap.put("term_div_coupon_type", "0");
+            String appId = order.getAppId();
+            if (StringUtils.isBlank(appId)){
+                appId = config.getAppId();
+            }
             if (order.getTradeType().equals("T_MINIAPP")||order.getTradeType().equals("T_JSAPI")){
                 JSONObject dto = new JSONObject();
                 // 子商户公众账号id
-                dto.put("sub_appid", config.getAppId());
+                dto.put("sub_appid", appId);
                 // 用户标识
                 dto.put("openid", order.getOpenid());
                 extendInfoMap.put("wx_data", dto);
@@ -69,7 +74,7 @@ public class HuiFuServiceImpl implements HuiFuService {
             if (order.getTradeType().equals("T_JSAPI")){
                 JSONObject dto = new JSONObject();
                 // 子商户公众账号id
-                dto.put("sub_appid", config.getAppId());
+                dto.put("sub_appid", appId);
                 // 用户标识
                 dto.put("sub_openid", order.getOpenid());
                 extendInfoMap.put("wx_data", dto);

+ 1 - 1
fs-service/src/main/java/com/fs/qw/mapper/QwUserMapper.java

@@ -142,7 +142,7 @@ public interface QwUserMapper extends BaseMapper<QwUser>
      *  查询企微用户绑定了的列表
      */
     @Select({"<script> " +
-            "select qu.*, cu.nick_name, cu.user_name, qd.dept_name as departmentName,fr.role_name AS fastGptRoleName from qw_user qu " +
+            "select qu.*, cu.nick_name, cu.user_name, qd.dept_name as departmentName,fr.role_name AS fastGptRoleName, cu.doctor_id from qw_user qu " +
             "LEFT JOIN company_user cu ON cu.user_id=qu.company_user_id " +
             "RIGHT JOIN qw_dept qd on qu.department=qd.dept_id and qd.corp_id=qu.corp_id " +
             "left join fastgpt_role fr on fr.role_id=qu.fastGpt_role_id " +

+ 1 - 0
fs-service/src/main/java/com/fs/qw/vo/QwUserVO.java

@@ -93,4 +93,5 @@ public class QwUserVO {
      */
     private String isAuto;
 
+    private Long doctorId;
 }

+ 2 - 2
fs-service/src/main/resources/application-config-druid-hyt.yml

@@ -37,8 +37,8 @@ wx:
       port: 6379
       timeout: 2000
     configs:
-      - appId:   # 第一个公众号的appid
-        secret: 1fac75465a61f9259a0fe19795d9e80d # 公众号的appsecret
+      - appId: wx9df02b2236d4fbf2 # 第一个公众号的appid
+        secret: 4f685750d40ab334b6f2f54b7d121389 # 公众号的appsecret
         token: PPKOdAlCoMO # 接口配置里的Token值
         aesKey: Eswa6VjwtVMCcw03qZy6fWllgrv5aytIA1SZPEU0kU2 # 接口配置里的EncodingAESKey值
 aifabu:  #爱链接

+ 2 - 0
fs-service/src/main/resources/application-druid-hyt-test.yml

@@ -153,3 +153,5 @@ rocketmq:
 openIM:
     secret:
     userID:
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true

+ 6 - 0
fs-service/src/main/resources/application-druid-lmjy-test.yml

@@ -148,3 +148,9 @@ rocketmq:
         group: test-group
         access-key: l # 替换为实际的 accessKey
         secret-key: l # 替换为实际的 secretKey
+ipad:
+    ipadUrl:
+    aiApi:
+openIM:
+    secret:
+    userID:

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

@@ -148,3 +148,9 @@ rocketmq:
         group: test-group
         access-key: l # 替换为实际的 accessKey
         secret-key: l # 替换为实际的 secretKey
+ipad:
+    ipadUrl:
+    aiApi:
+openIM:
+    secret:
+    userID:

+ 2 - 0
fs-service/src/main/resources/mapper/company/CompanyUserMapper.xml

@@ -42,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="isAudit"    column="is_audit"    />
         <result property="isNeedRegisterMember"    column="is_need_register_member"    />
         <result property="isAllowedAllRegister"    column="is_allowed_all_register"    />
+        <result property="doctorId"    column="doctor_id"    />
         <association property="dept"    column="dept_id" javaType="CompanyDept" resultMap="deptResult" />
         <collection  property="roles"   javaType="java.util.List"        resultMap="RoleResult" />
     </resultMap>
@@ -217,6 +218,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="addressId != null">address_id = #{addressId},</if>
             <if test="domain != null">domain = #{domain},</if>
             <if test="isAudit != null">`is_audit` = #{isAudit},</if>
+            <if test="doctorId != null">`doctor_id` = #{doctorId},</if>
         </trim>
         where user_id = #{userId}
     </update>

+ 15 - 14
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -281,10 +281,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="tabValue != null and tabValue !='' ">
             <choose>
                 <when test = "tabValue == 1">
-                    AND DAY(fs_user_company_user.create_time) = DAY(NOW())
+                    AND fs_user_company_user.create_time >= CURDATE() AND fs_user_company_user.create_time &lt; CURDATE() + INTERVAL 1 DAY
                 </when>
                 <when test = "tabValue == 2">
-                    AND DAY(fs_user_course_count.complete_watch_date) = DAY(NOW())
+                    AND fs_user_course_count.complete_watch_date >= CURDATE() AND fs_user_course_count.complete_watch_date &lt; CURDATE() + INTERVAL 1 DAY
                 </when>
                 <when test = "tabValue == 3">
                     AND (fs_user_course_count.status = 3 or fs_user_course_count.status is null)
@@ -315,19 +315,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </choose>
         </if>
 
-        group by fs_user.user_id, fs_user_company_user.project_id
+        group by fs_user.user_id, fs_user_company_user.project_id, fs_user_company_user.create_time
 
-        <if test="continueMissCourseSort != null and continueMissCourseSort !='' ">
-            order by
-            <choose>
-                <when test = "continueMissCourseSort == 0">
-                    fs_user.create_time desc
-                </when>
-                <when test = "continueMissCourseSort == 1">
-                    fs_user.nick_name asc
-                </when>
-            </choose>
-        </if>
+        order by
+        <choose>
+            <when test = "continueMissCourseSort != null and continueMissCourseSort == 0">
+                fs_user_company_user.create_time desc,fs_user.user_id desc
+            </when>
+            <when test = "continueMissCourseSort != null and continueMissCourseSort == 1">
+                fs_user.nick_name asc,fs_user.user_id desc
+            </when>
+            <otherwise>
+                fs_user.user_id desc, fs_user_company_user.project_id
+            </otherwise>
+        </choose>
     </select>
 
     <select id="selectFsUserPageListNew" resultType="com.fs.store.vo.h5.FsUserPageListVO">

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

@@ -10,6 +10,7 @@ import com.fs.app.annotation.Login;
 import com.fs.app.utils.JwtUtils;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.param.LoginMaWxParam;
 import com.fs.common.param.LoginParam;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.IpUtil;
@@ -174,6 +175,11 @@ public class WxUserController extends AppBaseController{
             map.put("token",token);
             user.setPhone(encryptPhone(phoneNoInfo.getPhoneNumber()));
             map.put("user",user);
+            LoginMaWxParam loginMaWxParam = new LoginMaWxParam();
+            loginMaWxParam.setAppId(appId);
+            loginMaWxParam.setCompanyId(user.getCompanyId());
+
+            userService.handleFsUserWx(user,loginMaWxParam,session);
             return R.ok(map);
         } catch (WxErrorException e) {
             //this.logger.error(e.getMessage(), e);