소스 검색

Merge remote-tracking branch 'origin/master'

zyp 1 주 전
부모
커밋
407e5e43c5
41개의 변경된 파일330개의 추가작업 그리고 232개의 파일을 삭제
  1. 6 0
      fs-admin/src/main/java/com/fs/his/controller/FsCityController.java
  2. 0 1
      fs-admin/src/main/java/com/fs/his/controller/FsStoreProductPackageController.java
  3. 15 2
      fs-admin/src/main/java/com/fs/his/controller/FsUserController.java
  4. 1 1
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreActivityScrmController.java
  5. 1 1
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponIssueScrmController.java
  6. 1 1
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponIssueUserScrmController.java
  7. 1 1
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponScrmController.java
  8. 1 1
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponUserScrmController.java
  9. 3 0
      fs-common/src/main/java/com/fs/common/core/redis/RedisCache.java
  10. 1 1
      fs-company-app/src/main/java/com/fs/app/controller/UserController.java
  11. 12 0
      fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsInfoController.java
  12. 0 59
      fs-company/src/main/java/com/fs/hisStore/controller/FsCityScrmController.java
  13. 4 4
      fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java
  14. 6 0
      fs-service/src/main/java/com/fs/course/config/CourseConfig.java
  15. 1 0
      fs-service/src/main/java/com/fs/course/domain/FsUserCoursePeriodDays.java
  16. 1 1
      fs-service/src/main/java/com/fs/course/param/FsCourseSendRewardUParam.java
  17. 5 0
      fs-service/src/main/java/com/fs/course/param/FsCourseTrafficLogParam.java
  18. 3 0
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseTrafficLogServiceImpl.java
  19. 13 2
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  20. 2 2
      fs-service/src/main/java/com/fs/his/mapper/FsPackageMapper.java
  21. 1 6
      fs-service/src/main/java/com/fs/his/mapper/FsUserMapper.java
  22. 97 97
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java
  23. 15 0
      fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java
  24. 4 0
      fs-service/src/main/java/com/fs/his/vo/FsUserVO.java
  25. 12 8
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsShippingTemplatesScrmServiceImpl.java
  26. 5 1
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  27. 1 1
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java
  28. 10 4
      fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java
  29. 1 0
      fs-service/src/main/java/com/fs/sop/params/SendUserLogsInfoMsgParam.java
  30. 1 0
      fs-service/src/main/java/com/fs/sop/service/ISopUserLogsInfoService.java
  31. 9 0
      fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java
  32. 12 12
      fs-service/src/main/java/com/fs/system/mapper/SysDictDataMapper.java
  33. 1 1
      fs-service/src/main/resources/application-config-druid-syysy.yml
  34. 12 0
      fs-service/src/main/resources/db/20250822-项目会员状态.sql
  35. 6 0
      fs-service/src/main/resources/mapper/course/FsCourseTrafficLogMapper.xml
  36. 8 6
      fs-service/src/main/resources/mapper/his/FsUserMapper.xml
  37. 3 3
      fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java
  38. 20 12
      fs-user-app/src/main/java/com/fs/app/controller/WxH5MpController.java
  39. 3 3
      fs-user-app/src/main/java/com/fs/app/controller/store/AppLoginScrmController.java
  40. 30 0
      fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByCourseMpParam.java
  41. 2 1
      fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByMpParam.java

+ 6 - 0
fs-admin/src/main/java/com/fs/his/controller/FsCityController.java

@@ -129,4 +129,10 @@ public class FsCityController extends BaseController
         return R.ok().put("data",fsCityService.getCitysArea());
     }
 
+    @GetMapping("/getAllList")
+    public R getAllList(FsCity fsCity)
+    {
+        List<FsCity> list = fsCityService.selectFsCityList(fsCity);
+        return R.ok().put("data",list);
+    }
 }

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

@@ -153,7 +153,6 @@ public class FsStoreProductPackageController extends BaseController
         JSONArray jsonArray=JSONUtil.parseArray(fsStoreProductPackage.getProductList());
         List<StorePackageProductDTO> goodsList=JSONUtil.toList(jsonArray, StorePackageProductDTO.class);
         fsStoreProductPackage.setProducts(JSONUtil.toJsonStr(goodsList));
-        fsStoreProductPackage.setCompanyId(0l);
 
         return toAjax(fsStoreProductPackageService.insertFsStoreProductPackage(fsStoreProductPackage));
     }

+ 15 - 2
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -140,8 +140,21 @@ public class FsUserController extends BaseController
     {
         startPage();
         List<FsUserVO> list = fsUserService.selectFsUserVOListByProject(fsUser);
-        for (FsUserVO vo : list){
-            vo.setPhone(ParseUtils.parsePhone(vo.getPhone()));
+        boolean checkPhone = isCheckPhone();
+        for (FsUserVO fsUserVO : list) {
+            if(fsUserVO.getPhone() != null&&fsUserVO.getPhone()!=""){
+                if (!checkPhone){
+                    if (fsUserVO.getPhone().length()>11){
+                        fsUserVO.setPhone(decryptPhoneMk(fsUserVO.getPhone()));
+                    }else {
+                        fsUserVO.setPhone(fsUserVO.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+                    }
+                } else {
+                    if (fsUserVO.getPhone().length()>11) {
+                        fsUserVO.setPhone(decryptPhone(fsUserVO.getPhone()));
+                    }
+                }
+            }
         }
         return getDataTable(list);
     }

+ 1 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreActivityScrmController.java

@@ -25,7 +25,7 @@ import java.util.List;
  * @date 2022-11-18
  */
 @RestController
-@RequestMapping("/store/store/storeActivity")
+@RequestMapping("/store/storeActivity")
 public class FsStoreActivityScrmController extends BaseController
 {
     @Autowired

+ 1 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponIssueScrmController.java

@@ -22,7 +22,7 @@ import java.util.List;
  * @date 2022-03-15
  */
 @RestController
-@RequestMapping("/store/store/storeCouponIssue")
+@RequestMapping("/store/storeCouponIssue")
 public class FsStoreCouponIssueScrmController extends BaseController
 {
     @Autowired

+ 1 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponIssueUserScrmController.java

@@ -21,7 +21,7 @@ import java.util.List;
  * @date 2022-03-15
  */
 @RestController
-@RequestMapping("/store/store/storeCouponIssueUser")
+@RequestMapping("/store/storeCouponIssueUser")
 public class FsStoreCouponIssueUserScrmController extends BaseController
 {
     @Autowired

+ 1 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponScrmController.java

@@ -26,7 +26,7 @@ import java.util.List;
  * @date 2022-03-15
  */
 @RestController
-@RequestMapping("/store/store/storeCoupon")
+@RequestMapping("/store/storeCoupon")
 public class FsStoreCouponScrmController extends BaseController
 {
     @Autowired

+ 1 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreCouponUserScrmController.java

@@ -23,7 +23,7 @@ import java.util.List;
  * @date 2022-03-15
  */
 @RestController
-@RequestMapping("/store/store/storeCouponUser")
+@RequestMapping("/store/storeCouponUser")
 public class FsStoreCouponUserScrmController extends BaseController
 {
     @Autowired

+ 3 - 0
fs-common/src/main/java/com/fs/common/core/redis/RedisCache.java

@@ -233,4 +233,7 @@ public class RedisCache
     }
 
 
+    public Boolean setIfAbsent(String key, String value, long timeout, TimeUnit unit) {
+        return redisTemplate.opsForValue().setIfAbsent(key, value, timeout, unit);
+    }
 }

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

@@ -216,7 +216,7 @@ public class UserController extends AppBaseController {
             result.put("perms", perms);
             return R.ok("登录成功").put("data", result);
         } catch (Exception e) {
-            return R.error("登录异常");
+            return R.error("登录异常:"+e.getMessage());
         }
     }
 

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

@@ -418,6 +418,18 @@ public class SopUserLogsInfoController extends BaseController
         return sopUserLogsInfoService.sendUserLogsInfoMsgType(param);
     }
 
+    /**
+     * 一键群发sopUserLogsInfo
+     */
+    @PreAuthorize("@ss.hasPermi('qw:sopUserLogsInfo:msg')")
+    @Log(title = "sendUserLogsInfoMsgSop", businessType = BusinessType.INSERT,isSaveRequestData=false)
+    @PostMapping("/sendUserLogsInfoMsgSop")
+    @RepeatSubmit
+    public R sendUserLogsInfoMsgSop(@RequestBody SendUserLogsInfoMsgParam param)
+    {
+        return sopUserLogsInfoService.sendUserLogsInfoMsgSop(param);
+    }
+
 
     /**
      * 删除sopUserLogsInfo

+ 0 - 59
fs-company/src/main/java/com/fs/hisStore/controller/FsCityScrmController.java

@@ -1,59 +0,0 @@
-package com.fs.hisStore.controller;
-
-import com.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.R;
-import com.fs.hisStore.domain.FsCityScrm;
-import com.fs.hisStore.service.IFsCityScrmService;
-import com.fs.store.utils.CityTreeUtil;
-import com.fs.store.vo.CityVO;
-import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.Cacheable;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * 城市Controller
- *
- * @author fs
- * @date 2022-03-15
- */
-@RestController
-@RequestMapping("/store/store/city")
-public class FsCityScrmController extends BaseController
-{
-    @Autowired
-    private IFsCityScrmService fsCityService;
-
-//
-//    @GetMapping("/getAllList")
-//    @Cacheable("citys")
-//    public R getAllList(FsCityScrm fsCity)
-//    {
-//        List<FsCityScrm> list = fsCityService.selectFsCityList(fsCity);
-//        return R.ok().put("data",list);
-//    }
-
-
-    @ApiOperation("获取城市数据")
-    @GetMapping("/getCitys")
-    @Cacheable("citys")
-    public R getCitys(HttpServletRequest request){
-        List<FsCityScrm> list=fsCityService.selectFsCitys();
-        List<CityVO> cityVOS = Lists.newArrayList();
-        for (FsCityScrm city : list){
-            CityVO cityVO = new CityVO();
-            cityVO.setValue(Long.parseLong(city.getCityId()));
-            cityVO.setLabel(city.getCityName());
-            cityVO.setPid(Long.parseLong(city.getParentId()));
-            cityVOS.add(cityVO);
-        }
-        return R.ok().put("data", CityTreeUtil.list2TreeConverter(cityVOS, 0));
-
-    }
-}

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

@@ -255,10 +255,10 @@ public class CompanyUserServiceImpl implements ICompanyUserService
         logger.info("打印邀请用户信息------------------------------》:{}",user);
         // 新增用户信息
         int rows = companyUserMapper.insertCompanyUser(user);
-//        // 新增用户岗位关联
-//        insertUserPost(user);
-//        // 新增用户与角色管理
-//        insertUserRole(user);
+        // 新增用户岗位关联
+        insertUserPost(user);
+        // 新增用户与角色管理
+        insertUserRole(user);
         //新增用户需要修改密码
         redisCache.setCacheObject("newCompanyUser:" + user.getCompanyId() + ":" +user.getUserName(),user.getUserId());
         return rows;

+ 6 - 0
fs-service/src/main/java/com/fs/course/config/CourseConfig.java

@@ -52,6 +52,12 @@ public class CourseConfig implements Serializable {
      */
     private String userCourseAuthDomain;
 
+    /**
+     * 会员看课
+     * 炮灰看课发红包-服务号发
+     */
+    private String userCourseH5Reward;
+
     /**
      * 是否绑定
      */

+ 1 - 0
fs-service/src/main/java/com/fs/course/domain/FsUserCoursePeriodDays.java

@@ -96,6 +96,7 @@ public class FsUserCoursePeriodDays extends BaseEntityTow {
     private LocalDate maxDate;
 
     /** 项目id */
+    @TableField(exist = false)
     private Long projectId;
 
 }

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

@@ -27,7 +27,7 @@ public class FsCourseSendRewardUParam implements Serializable
     private Integer sendType;
     private Long periodId;
 
-    private String appId;
+    private String appId; //前端传来的小程序的appid
 
     private String code;
 

+ 5 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseTrafficLogParam.java

@@ -35,4 +35,9 @@ public class FsCourseTrafficLogParam {
      */
     private String tabType;
 
+    /**
+     * 公共看课
+     */
+    private String common;
+
 }

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

@@ -183,6 +183,9 @@ public class FsCourseTrafficLogServiceImpl implements IFsCourseTrafficLogService
         if(StringUtils.isBlank(param.getStartDate()) && StringUtils.isBlank(param.getEndDate())){
             throw new CustomException("搜索必须要一个时间范围!");
         }
+        if (ObjectUtils.isNotEmpty(param.getTabType())&&param.getTabType().equals("common")){
+            param.setCommon(param.getTabType());
+        }
         List<FsCourseTrafficLogListVO> fsCourseTrafficLogListVOS = fsCourseTrafficLogMapper.selectTrafficNew(param);
         for (FsCourseTrafficLogListVO log : fsCourseTrafficLogListVOS) {
             if (ObjectUtils.isNotNull(log.getProject())) {

+ 13 - 2
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -1212,6 +1212,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         if (StringUtils.isNotEmpty(config.getMpAppId())){
             packetParam.setMpAppId(config.getMpAppId());
         }
+        //组装发红包数据
         packetParam.setAmount(amount);
         packetParam.setSource(param.getSource());
         packetParam.setRedPacketMode(config.getRedPacketMode());
@@ -1517,9 +1518,18 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
     @Transactional
     public ResponseResult<FsUser> isAddCompanyUser(FsUserCourseAddCompanyUserParam param) {
         logger.info("\n 【进入个微-判断是否添加客服】,入参:{}",param);
+
+        // 生成锁的key,使用用户ID和视频ID组合
+        String lockKey = "submit:lock:" + param.getUserId() + ":" + param.getVideoId();
+        // 尝试获取锁,3秒过期
+        boolean locked = redisCache.setIfAbsent(lockKey, "1", 1, TimeUnit.SECONDS);
+
+        if (!locked) {
+            return ResponseResult.fail(504, "请勿重复提交,请等待3秒后重试");
+        }
         //查询用户
-        FsUser fsUser = fsUserMapper.selectFsUserById(param.getUserId());
-        if (fsUser == null){
+       FsUser fsUser = fsUserMapper.selectFsUserById(param.getUserId());
+         if (fsUser == null){
             return ResponseResult.fail(404,"当前用户信息不存在");
         }
         //公开课
@@ -1827,6 +1837,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         vo.setPlayDuration(duration);
         //判断营期的课程状态是否是进行中
         if(param.getId() != null){
+
             FsUserCoursePeriodDays days = fsUserCoursePeriodDaysMapper.selectById(param.getId());
 
             // 查询销售设置的看课时间

+ 2 - 2
fs-service/src/main/java/com/fs/his/mapper/FsPackageMapper.java

@@ -112,13 +112,13 @@ public interface FsPackageMapper
     @Select({"<script> " +
             "select p.*  from fs_package p    " +
             "where p.status=1 and p.is_del=0   " +
-            "<if test = 'maps.keyword != null     '> " +
+            "<if test = 'maps.keyword != null and  maps.keyword != \"\"   '> " +
             "and ( p.package_name like CONCAT('%',#{maps.keyword},'%') or p.second_name like CONCAT('%',#{maps.keyword},'%')) " +
             "</if>" +
             "<if test = 'maps.diseaseType != null and maps.diseaseType !=0    '> " +
             "and p.disease_type = #{maps.diseaseType} " +
             "</if>" +
-            "<if test = 'maps.privateType != null'> " +
+            "<if test = 'maps.privateType != null and maps.privateType != 0'> " +
             "and p.private_type = #{maps.privateType} " +
             "</if>" +
             "<if test = 'maps.isShow != null '> " +

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

@@ -80,10 +80,7 @@ public interface FsUserMapper
      */
     public int deleteFsUserByUserIds(Long[] userIds);
     @Select({"<script> " +
-                "select f1.*,f2.nick_name tui_name,f2.phone tui_phone,cu.nick_name AS companyUserNickName,co.company_name FROM fs_user f1 LEFT JOIN fs_user f2 ON f1.tui_user_id =f2.user_id "+
-            " LEFT JOIN fs_user_company_user cuc ON cuc.user_id = f1.user_id\n" +
-            " LEFT JOIN company_user cu ON cu.user_id = cuc.company_user_id\n" +
-            " LEFT JOIN company co ON co.company_id = cuc.company_id "+
+                "select f1.*,f2.nick_name tui_name,f2.phone tui_phone FROM fs_user f1 LEFT JOIN fs_user f2 ON f1.tui_user_id =f2.user_id "+
             " where f1.is_del=0 "+
             "  <if test=\"nickName != null  and nickName != ''\"> and f1.nick_name like concat( #{nickName}, '%')</if>\n" +
             "            <if test=\"avatar != null  and avatar != ''\"> and f1.avatar = #{avatar}</if>\n" +
@@ -99,8 +96,6 @@ public interface FsUserMapper
             "            <if test=\"loginDevice != null  and loginDevice != ''\"> and f1.login_device = #{loginDevice}</if>\n" +
             "            <if test=\"sTime != null \">  and DATE(f1.create_time) &gt;= DATE(#{sTime})</if>\n" +
             "            <if test=\"eTime != null \">  and DATE(f1.create_time) &lt;= DATE(#{eTime})</if>\n" +
-            "            <if test=\"companyId != null \">and co.company_id = #{companyId}</if>\n" +
-            "            <if test=\"companyUserId != null \">and cuc.company_user_id = #{companyUserId}</if>\n" +
             "order by f1.user_id desc"+
             "</script>"})
     @Results({

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

@@ -341,106 +341,106 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
             return R.error("无效的类型参数");
         }
     }
-    public Map<String,Object> computeOrderMoney(BigDecimal orderPrice,FsPackageOrderComputeParam param){
-        Map<String,Object> moneys=new HashMap<>();
-        BigDecimal payPrice=orderPrice;
-        BigDecimal payMoney=new BigDecimal(0);
-        BigDecimal payRemain=new BigDecimal(0);
-        BigDecimal payDelivery=new BigDecimal(0);
-        BigDecimal discountMoney=new BigDecimal(0);
-        String json=configService.selectConfigByKey("his.package");
-        PackageConfigDTO configDTO=JSONUtil.toBean(json, PackageConfigDTO.class);
-        if(param.getUserCouponId()!=null&&param.getUserCouponId()>0l){
-            FsUserCoupon userCoupon=userCouponService.selectFsUserCouponById(param.getUserCouponId());
-            if(userCoupon==null){
-
-            }
-            if(userCoupon.getStatus()!=0){
+    public Map<String, Object> computeOrderMoney(BigDecimal orderPrice, FsPackageOrderComputeParam param) {
+        Map<String, Object> moneys = new HashMap<>();
+        BigDecimal payPrice = orderPrice;
+        BigDecimal payMoney = new BigDecimal(0);
+        BigDecimal payRemain = new BigDecimal(0);
+        BigDecimal payDelivery = new BigDecimal(0);
+        BigDecimal discountMoney = new BigDecimal(0);
+        String json = configService.selectConfigByKey("his.package");
+        PackageConfigDTO configDTO = JSONUtil.toBean(json, PackageConfigDTO.class);
+        if (param.getUserCouponId() != null && param.getUserCouponId() > 0l) {
+            FsUserCoupon userCoupon = userCouponService.selectFsUserCouponById(param.getUserCouponId());
+            if (userCoupon != null) {
+                if (userCoupon.getStatus() == 0) {
+                    FsCoupon coupon = couponService.selectFsCouponByCouponId(userCoupon.getCouponId());
+                    if (coupon.getCouponType().equals(1)) {
+                        if (coupon.getMinPrice().compareTo(orderPrice) <=0) {
+                            if (coupon.getPrice().compareTo(orderPrice) >= 0) {
+                                payPrice = new BigDecimal(0);
+                                discountMoney = coupon.getPrice();
+                            } else {
+                                payPrice = orderPrice.subtract(coupon.getPrice());
+                                discountMoney = coupon.getPrice();
+                            }
+                        }
+                        //中药免单券
+                    } else if (coupon.getCouponType().equals(2)) {
+                        payPrice = new BigDecimal(0);
+                        discountMoney = orderPrice;
+                        //问诊免单券
+                    } else if (coupon.getCouponType().equals(3)) {
+
+                        //中药打折券
+                    } else if (coupon.getCouponType().equals(4)) {
+                        payPrice = orderPrice.multiply(coupon.getRate()).divide(new BigDecimal(100));
+                        discountMoney = coupon.getPrice().subtract(orderPrice);
+                        //私域疗法券
+                    } else if (coupon.getCouponType().equals(5)) {
+                        if (coupon.getMinPrice().compareTo(orderPrice) <=0) {
+                            if (coupon.getPrice().compareTo(orderPrice) >= 0) {
+                                payPrice = new BigDecimal(0);
+                                discountMoney = coupon.getPrice();
+                            } else {
+                                payPrice = orderPrice.subtract(coupon.getPrice());
+                                discountMoney = coupon.getPrice();
 
-            }
-            FsCoupon coupon=couponService.selectFsCouponByCouponId(userCoupon.getCouponId());
-            if(coupon.getCouponType().equals(1)){
-                if(coupon.getMinPrice().compareTo(orderPrice)==1){
-
-                }
-                if(coupon.getPrice().compareTo(orderPrice)>=0){
-                    payPrice=new BigDecimal(0);
-                    discountMoney=coupon.getPrice();
-                }
-                else{
-                    payPrice=orderPrice.subtract(coupon.getPrice());
-                    discountMoney=coupon.getPrice();
 
+                            }
+                        }
+                        //公域疗法券
+                    }else if (coupon.getCouponType().equals(6)){
+                        if (coupon.getMinPrice().compareTo(orderPrice) >=0) {
+                            //throw  new ServiceException("优惠劵最低金额大于订单金额");
 
+                        }
+                        if (coupon.getPrice().compareTo(orderPrice) >= 0) {
+                            payPrice = new BigDecimal(0);
+                            discountMoney = coupon.getPrice();
+                        } else {
+                            payPrice = orderPrice.subtract(coupon.getPrice());
+                            discountMoney = coupon.getPrice();
+                        }
+                    }
                 }
             }
-            else if(coupon.getCouponType().equals(2)){
-                payPrice=new BigDecimal(0);
-                discountMoney=orderPrice;
-
-            }
-            else if(coupon.getCouponType().equals(3)){
-
-
-            }
-            else if(coupon.getCouponType().equals(4)){
-                payPrice= orderPrice.multiply(coupon.getRate()).divide(new BigDecimal(100));
-                discountMoney=coupon.getPrice().subtract(orderPrice);
 
-            }
-            else if(coupon.getCouponType().equals(5)){
-                if(coupon.getMinPrice().compareTo(orderPrice)==1){
 
-                }
-                if(coupon.getPrice().compareTo(orderPrice)>=0){
-                    payPrice=new BigDecimal(0);
-                    discountMoney=coupon.getPrice();
-                }
-                else{
-                    payPrice=orderPrice.subtract(coupon.getPrice());
-                    discountMoney=coupon.getPrice();
-
-
-                }
-
-            }
-        }
-        else{
-            payPrice=orderPrice;
-            discountMoney=new BigDecimal(0);
+        } else {
+            payPrice = orderPrice;
+            discountMoney = new BigDecimal(0);
         }
 
-        if(payPrice.compareTo(new BigDecimal(0))==1){
-            if(param.getPayType().equals(1)){
+        if (payPrice.compareTo(new BigDecimal(0)) == 1) {
+            if (param.getPayType().equals(1)) {
                 //全款
-                payMoney=payPrice;
-                payRemain=new BigDecimal(0);
-                payDelivery=new BigDecimal(0);
+                payMoney = payPrice;
+                payRemain = new BigDecimal(0);
+                payDelivery = new BigDecimal(0);
 
-            }
-            else if (param.getPayType().equals(2)){
+            } else if (param.getPayType().equals(2)) {
                 //代收
-                payMoney= payPrice.multiply(new BigDecimal((100-configDTO.getPayRate()))).divide(new BigDecimal(100));
-                payMoney=new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
-                payRemain=payPrice.subtract(payMoney);
-                payDelivery=new BigDecimal(0);
-                if(payRemain.compareTo(new BigDecimal(0))==0){
-                    throw  new CustomException("代收金额应大于0");
+                payMoney = payPrice.multiply(new BigDecimal((100 - configDTO.getPayRate()))).divide(new BigDecimal(100));
+                payMoney = new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
+                payRemain = payPrice.subtract(payMoney);
+                payDelivery = new BigDecimal(0);
+                if (payRemain.compareTo(new BigDecimal(0)) == 0) {
+                    throw new CustomException("代收金额应大于0");
                 }
-            }
-            else if(param.getPayType().equals(3)){
+            } else if (param.getPayType().equals(3)) {
                 //货到付款
-                payMoney=configDTO.getPayDelivery();
-                payPrice=payPrice.add(configDTO.getPayDelivery());
-                payRemain=payPrice.subtract(configDTO.getPayDelivery());
-                payDelivery=configDTO.getPayDelivery();
+                payMoney = configDTO.getPayDelivery();
+                payPrice = payPrice.add(configDTO.getPayDelivery());
+                payRemain = payPrice.subtract(configDTO.getPayDelivery());
+                payDelivery = configDTO.getPayDelivery();
             }
         }
-        moneys.put("payPrice",payPrice);
-        moneys.put("payMoney",payMoney);
-        moneys.put("payRemain",payRemain);
-        moneys.put("payDelivery",payDelivery);
-        moneys.put("discountMoney",discountMoney);
+        moneys.put("payPrice", payPrice);
+        moneys.put("payMoney", payMoney);
+        moneys.put("payRemain", payRemain);
+        moneys.put("payDelivery", payDelivery);
+        moneys.put("discountMoney", discountMoney);
         List<StoreOrderProductDTO> gifts=new ArrayList<>();
         if(configDTO.getGiftStoreId()!=null&&param.getStoreId()!=null&&configDTO.getGiftStoreId().equals(param.getStoreId())&&param.getPayType()==1&&param.getCompanyId()!=null&&param.getCompanyUserId()!=null&&param.getCompanyId()>0&&payPrice.compareTo(configDTO.getGiftPrice())>=0){
             gifts=configDTO.getGift();
@@ -613,6 +613,19 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
             computeParam.setUserCouponId(order.getUserCouponId());
         }
 
+        Map<String,Object> moneys=computeOrderMoney(order.getTotalPrice(),computeParam);
+        fsPackageOrder.setPayMoney((BigDecimal)moneys.get("payMoney"));
+        fsPackageOrder.setPayPrice((BigDecimal)moneys.get("payPrice"));
+        fsPackageOrder.setPayDelivery((BigDecimal)moneys.get("payDelivery"));
+        if (param.getUserCouponId()!=null&&param.getUserCouponId()>0){
+            fsPackageOrder.setUserCouponId(param.getUserCouponId());
+
+        }
+        fsPackageOrder.setDiscountMoney((BigDecimal)moneys.get("discountMoney"));
+        fsPackageOrder.setPayRemain((BigDecimal)moneys.get("payRemain"));
+        fsPackageOrder.setPayType(param.getPayType());
+        fsPackageOrderMapper.updateFsPackageOrder(fsPackageOrder);
+
         if (param.getUserCouponId()!=null&&param.getUserCouponId()>0){
             FsUserCoupon userCoupon=userCouponService.selectFsUserCouponById(param.getUserCouponId());
             FsCoupon coupon=couponService.selectFsCouponByCouponId(userCoupon.getCouponId());
@@ -626,19 +639,6 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
             userCouponService.updateFsUserCoupon(userCoupon);
         }
 
-
-        Map<String,Object> moneys=computeOrderMoney(order.getTotalPrice(),computeParam);
-        fsPackageOrder.setPayMoney((BigDecimal)moneys.get("payMoney"));
-        fsPackageOrder.setPayPrice((BigDecimal)moneys.get("payPrice"));
-        fsPackageOrder.setPayDelivery((BigDecimal)moneys.get("payDelivery"));
-        if (param.getUserCouponId()!=null&&param.getUserCouponId()>0){
-            fsPackageOrder.setUserCouponId(param.getUserCouponId());
-
-        }
-        fsPackageOrder.setDiscountMoney((BigDecimal)moneys.get("discountMoney"));
-        fsPackageOrder.setPayRemain((BigDecimal)moneys.get("payRemain"));
-        fsPackageOrder.setPayType(param.getPayType());
-        fsPackageOrderMapper.updateFsPackageOrder(fsPackageOrder);
         return R.ok();
 
     }

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

@@ -25,6 +25,7 @@ import com.fs.company.param.FsStoreStatisticsParam;
 import com.fs.company.vo.FsStorePaymentStatisticsVO;
 import com.fs.core.config.WxPayProperties;
 import com.fs.core.utils.OrderCodeUtils;
+import com.fs.course.config.CourseConfig;
 import com.fs.course.config.RedPacketConfig;
 import com.fs.course.domain.FsCourseRedPacketLog;
 import com.fs.course.mapper.FsCourseRedPacketLogMapper;
@@ -490,12 +491,26 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
         }
         result.put("mchId",config.getMchId()+"");
         result.put("isNew",config.getIsNew());
+
+        // 获取配置信息 (这个地方返回炮灰服务号落地url,调用地方太多,无法一级一级下传,直接再拿一次)
+        String courseJson = configService.selectConfigByKey("course.config");
+        CourseConfig courseConfig = JSONUtil.toBean(courseJson, CourseConfig.class);
+        result.put("h5RewardUrl", Optional.ofNullable(courseConfig)
+                .map(CourseConfig::getUserCourseH5Reward)
+                .orElse(null));
+
         System.out.println("红包返回:"+result);
         return result;
     }
 
     // 内部方法:处理新版本的发红包逻辑
     private R sendRedPacketV3Internal(WxSendRedPacketParam param, RedPacketConfig config) {
+        //炮灰小程序,发服务号
+        if (param.getSource()==1 && param.getUser().getMpOpenId()!=null && StringUtils.isNotEmpty(param.getMpAppId())){
+            config.setAppId(param.getMpAppId());
+            param.setOpenId(param.getUser().getMpOpenId());
+        }
+
         WxPayConfig payConfig = new WxPayConfig();
         BeanUtils.copyProperties(config, payConfig);
         WxPayService wxPayService = new WxPayServiceImpl();

+ 4 - 0
fs-service/src/main/java/com/fs/his/vo/FsUserVO.java

@@ -161,4 +161,8 @@ public class FsUserVO extends FsUser implements Serializable
 
     @ApiModelProperty(value = "销售用户关联id")
     private Long companyUserId;
+
+    @ApiModelProperty(value = "绑定时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date bindTime;
 }

+ 12 - 8
fs-service/src/main/java/com/fs/hisStore/service/impl/FsShippingTemplatesScrmServiceImpl.java

@@ -25,7 +25,7 @@ import com.fs.hisStore.service.IFsShippingTemplatesScrmService;
 
 /**
  * 运费模板Service业务层处理
- * 
+ *
  * @author fs
  * @date 2022-03-15
  */
@@ -45,7 +45,7 @@ public class FsShippingTemplatesScrmServiceImpl implements IFsShippingTemplatesS
 
     /**
      * 查询运费模板
-     * 
+     *
      * @param shippingId 运费模板ID
      * @return 运费模板
      */
@@ -57,7 +57,7 @@ public class FsShippingTemplatesScrmServiceImpl implements IFsShippingTemplatesS
 
     /**
      * 查询运费模板列表
-     * 
+     *
      * @param fsShippingTemplates 运费模板
      * @return 运费模板
      */
@@ -69,7 +69,7 @@ public class FsShippingTemplatesScrmServiceImpl implements IFsShippingTemplatesS
 
     /**
      * 新增运费模板
-     * 
+     *
      * @param fsShippingTemplates 运费模板
      * @return 结果
      */
@@ -82,7 +82,7 @@ public class FsShippingTemplatesScrmServiceImpl implements IFsShippingTemplatesS
 
     /**
      * 修改运费模板
-     * 
+     *
      * @param fsShippingTemplates 运费模板
      * @return 结果
      */
@@ -95,7 +95,7 @@ public class FsShippingTemplatesScrmServiceImpl implements IFsShippingTemplatesS
 
     /**
      * 批量删除运费模板
-     * 
+     *
      * @param shippingIds 需要删除的运费模板ID
      * @return 结果
      */
@@ -107,7 +107,7 @@ public class FsShippingTemplatesScrmServiceImpl implements IFsShippingTemplatesS
 
     /**
      * 删除运费模板信息
-     * 
+     *
      * @param shippingId 运费模板ID
      * @return 结果
      */
@@ -123,7 +123,11 @@ public class FsShippingTemplatesScrmServiceImpl implements IFsShippingTemplatesS
             throw new CustomException("请指定包邮地区");
         }
         FsShippingTemplatesScrm shippingTemplates = new FsShippingTemplatesScrm();
-        BeanUtil.copyProperties(fsShippingTemplates,shippingTemplates);
+        shippingTemplates.setId(fsShippingTemplates.getId());
+        shippingTemplates.setName(fsShippingTemplates.getName());
+        shippingTemplates.setType(fsShippingTemplates.getType());
+        shippingTemplates.setSort(fsShippingTemplates.getSort());
+        shippingTemplates.setAppoint(fsShippingTemplates.getAppoint());
         shippingTemplates.setRegionInfo(JSON.toJSONString(fsShippingTemplates.getRegionInfo()));
         shippingTemplates.setAppointInfo(JSON.toJSONString(fsShippingTemplates.getAppointInfo()));
         if(fsShippingTemplates.getId() != null && fsShippingTemplates.getId()  > 0){

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

@@ -1486,7 +1486,11 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService
             }
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(storeOrder.getCreateTime());
-            calendar.add(Calendar.MINUTE,config.getUnPayTime());
+            if(ObjectUtil.isNotEmpty(config.getUnPayTime())){
+                calendar.add(Calendar.MINUTE,config.getUnPayTime());
+            }else {
+                calendar.add(Calendar.MINUTE,30);
+            }
             SimpleDateFormat format = new   SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String payLimitTime = format.format(calendar.getTime() );
             return R.ok().put("order", storeOrder).put("payLimitTime",payLimitTime);

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

@@ -299,7 +299,7 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
     public R addOrEdit(FsStoreProductAddEditParam param) {
         ProductAttrCountDto countDto=computedProductCount(param.getValues());
 
-        if(param.getProductId() != null){
+        if(ObjectUtil.isNotEmpty(param.getProductId())&&param.getProductId()>0){
             FsStoreProductScrm product=new FsStoreProductScrm();
             BeanUtils.copyProperties(param,product);
             product.setPrice(countDto.getMinPrice());

+ 10 - 4
fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java

@@ -6,10 +6,7 @@ import com.fs.qw.param.SopUserLogsVO;
 import com.fs.qw.vo.UpdateSopUserLogDateVo;
 import com.fs.sop.domain.SopUserLogs;
 import com.fs.sop.domain.SopUserLogsInfo;
-import com.fs.sop.params.GetSOPTaskDataParam;
-import com.fs.sop.params.SopUserLogsList;
-import com.fs.sop.params.SopUserLogsParam;
-import com.fs.sop.params.SopUserLogsParamByDate;
+import com.fs.sop.params.*;
 import com.fs.sop.vo.SopUserLogsInfoVo;
 import com.fs.sop.vo.SopUserLogsVo;
 import org.apache.ibatis.annotations.Param;
@@ -260,4 +257,13 @@ public interface SopUserLogsMapper {
 
     @DataSource(DataSourceType.SOP)
     List<SopUserLogs> getSopUserLogsInfoById(@Param("ids") String[] ids);
+
+    @DataSource(DataSourceType.SOP)
+    @Select({"<script> " +
+            "SELECT id FROM sop_user_logs " +
+            "WHERE corp_id = #{param.corpId} " +
+            "and sop_id in" +
+            "<foreach  item='item' index='index' collection='param.sopIds' open='(' separator=',' close=')'> #{item}    </foreach>" +
+            "</script>"})
+    List<String> getSopUserLogsIds(@Param("param")SendUserLogsInfoMsgParam param);
 }

+ 1 - 0
fs-service/src/main/java/com/fs/sop/params/SendUserLogsInfoMsgParam.java

@@ -9,6 +9,7 @@ import lombok.Data;
 public class SendUserLogsInfoMsgParam {
 
     private String[] ids;
+    private String[] sopIds;
     private String[] chatIds;
     private Integer videoId;
     private Integer courseId;

+ 1 - 0
fs-service/src/main/java/com/fs/sop/service/ISopUserLogsInfoService.java

@@ -79,6 +79,7 @@ public interface ISopUserLogsInfoService {
     public R batchUpdateSopUserLogsInfoToTime(BatchSopUserLogsInfoParam param);
     public R sendUserLogsInfoMsg(SendUserLogsInfoMsgParam param);
     public R sendUserLogsInfoMsgType(SendUserLogsInfoMsgParam param);
+    R sendUserLogsInfoMsgSop(SendUserLogsInfoMsgParam param);
 
     List<SopUserLogsInfo> selectRestoreByIsDaysNotStudy(String sopId, String userLogsId);
 

+ 9 - 0
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -927,6 +927,15 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
         return null;
     }
 
+    @Override
+    public R sendUserLogsInfoMsgSop(SendUserLogsInfoMsgParam param) {
+        List<String> sopUserLogsIds = sopUserLogsMapper.getSopUserLogsIds(param);
+        String[] ids = sopUserLogsIds.toArray(new String[0]);
+        param.setIds(ids);
+        processQwSopLogsBySendMsg(param,param.getDraftStrategy());
+        return null;
+    }
+
     @Override
     public List<SopUserLogsInfo> selectRestoreByIsDaysNotStudy(String sopId, String userLogsId) {
         return sopUserLogsInfoMapper.selectRestoreByIsDaysNotStudy(sopId, userLogsId);

+ 12 - 12
fs-service/src/main/java/com/fs/system/mapper/SysDictDataMapper.java

@@ -9,14 +9,14 @@ import org.apache.ibatis.annotations.Select;
 
 /**
  * 字典表 数据层
- * 
+ *
 
  */
 public interface SysDictDataMapper
 {
     /**
      * 根据条件分页查询字典数据
-     * 
+     *
      * @param dictData 字典数据信息
      * @return 字典数据集合信息
      */
@@ -24,7 +24,7 @@ public interface SysDictDataMapper
 
     /**
      * 根据字典类型查询字典数据
-     * 
+     *
      * @param dictType 字典类型
      * @return 字典数据集合信息
      */
@@ -32,7 +32,7 @@ public interface SysDictDataMapper
 
     /**
      * 根据字典类型和字典键值查询字典数据信息
-     * 
+     *
      * @param dictType 字典类型
      * @param dictValue 字典键值
      * @return 字典标签
@@ -41,7 +41,7 @@ public interface SysDictDataMapper
 
     /**
      * 根据字典数据ID查询信息
-     * 
+     *
      * @param dictCode 字典数据ID
      * @return 字典数据
      */
@@ -49,7 +49,7 @@ public interface SysDictDataMapper
 
     /**
      * 查询字典数据
-     * 
+     *
      * @param dictType 字典类型
      * @return 字典数据
      */
@@ -57,7 +57,7 @@ public interface SysDictDataMapper
 
     /**
      * 通过字典ID删除字典数据信息
-     * 
+     *
      * @param dictCode 字典数据ID
      * @return 结果
      */
@@ -65,7 +65,7 @@ public interface SysDictDataMapper
 
     /**
      * 批量删除字典数据信息
-     * 
+     *
      * @param dictCodes 需要删除的字典数据ID
      * @return 结果
      */
@@ -73,7 +73,7 @@ public interface SysDictDataMapper
 
     /**
      * 新增字典数据信息
-     * 
+     *
      * @param dictData 字典数据信息
      * @return 结果
      */
@@ -81,7 +81,7 @@ public interface SysDictDataMapper
 
     /**
      * 修改字典数据信息
-     * 
+     *
      * @param dictData 字典数据信息
      * @return 结果
      */
@@ -89,13 +89,13 @@ public interface SysDictDataMapper
 
     /**
      * 同步修改字典类型
-     * 
+     *
      * @param oldDictType 旧字典类型
      * @param newDictType 新旧字典类型
      * @return 结果
      */
     public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
-    @Select("select dict_type,dict_label,dict_value from sys_dict_data where dict_type =#{dictType}")
+    @Select("select dict_type,dict_label,dict_value from sys_dict_data where dict_type =#{dictType} and status = 0")
     List<DictVO> selectDictDataListByType(String dictType);
 
     SysDictData selectDictDataByTypeAndValue(@Param("type") String type, @Param("value") String value);

+ 1 - 1
fs-service/src/main/resources/application-config-druid-syysy.yml

@@ -80,7 +80,7 @@ headerImg:
   imgUrl: https://ysy-1329817240.cos.ap-guangzhou.myqcloud.com/ysy/20250820/2c47e4f105b641b4a49df50a77338e32.png
 ipad:
   ipadUrl: http://ipad.ysya.top
-  aiApi:
+  aiApi: http://49.232.181.28:3000/api
 wx_miniapp_temp:
   pay_order_temp_id:
   inquiry_temp_id:

+ 12 - 0
fs-service/src/main/resources/db/20250822-项目会员状态.sql

@@ -0,0 +1,12 @@
+-- 字典
+INSERT INTO `sys_dict_type`
+(`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    ('项目会员状态', 'project_user_status', '0', 'admin', '2021-11-24 23:26:40', '', NULL, '项目会员状态');
+
+INSERT INTO `sys_dict_data`
+(`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    (1, '小黑屋', '0', 'project_user_status', '', '', 'Y', '0', 'admin', '2021-11-24 23:26:40', '', NULL, '小黑屋'),
+    (2, '正常', '1', 'project_user_status', '', '', 'Y', '0', 'admin', '2021-11-24 23:26:40', '', NULL, '正常'),
+    (3, '拉黑', '2', 'project_user_status', '', '', 'Y', '0', 'admin', '2021-11-24 23:26:40', '', NULL, '拉黑');

+ 6 - 0
fs-service/src/main/resources/mapper/course/FsCourseTrafficLogMapper.xml

@@ -255,6 +255,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="project != null">
                 and project = ${project}
             </if>
+            <if test="common == null">
+                AND company_id IS NULL
+            </if>
+            <if test="common != null ">
+                AND company_id IS NOT NULL
+            </if>
         </where>
 
         <if test="tabType==null or tabType==''">

+ 8 - 6
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -1619,11 +1619,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectFsUserVOListByProject" resultType="com.fs.his.vo.FsUserVO">
         SELECT distinct
         b.total_amount,b.last_buy_time,p.pay_money as number,p.payment_id,p.pay_time,
-        u.*,
+        u.user_id, u.nick_name, u.avatar, u.phone, u.integral, u.now_money,
         fcc.watch_course_count, fcc.part_course_count, company_user.nick_name AS companyUserNickName, fcc.last_watch_date
         ,company.company_name,
         ucu.project_id,
-        ucu.id as companyUserId
+        ucu.id as companyUserId,
+        ucu.create_time as bindTime,
+        ucu.status
         FROM
         fs_user u
         LEFT JOIN (
@@ -1648,7 +1650,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         fs_user_course_count
         GROUP BY fs_user_course_count.user_id
         ) fcc ON fcc.user_id = u.user_id
-        left join fs_user_company_user ucu on ucu.user_id = u.user_id
+        inner join fs_user_company_user ucu on ucu.user_id = u.user_id
         LEFT JOIN company_user ON company_user.user_id = ucu.company_user_id
         LEFT JOIN company on company.company_id = company_user.company_id
         <where>
@@ -1663,15 +1665,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 AND u.phone LIKE CONCAT("%",#{maps.phone},"%")
             </if >
             <if test = "maps.startCreateTime != null and maps.endCreateTime != null" >
-                AND (DATE_FORMAT( u.create_time, "%Y-%m-%d" ) &gt;= DATE_FORMAT(#{maps.startCreateTime}, "%Y-%m-%d")
-                and DATE_FORMAT( u.create_time, "%Y-%m-%d" ) &lt;= DATE_FORMAT(#{maps.endCreateTime}, "%Y-%m-%d")
+                AND (DATE_FORMAT( ucu.create_time, "%Y-%m-%d" ) &gt;= DATE_FORMAT(#{maps.startCreateTime}, "%Y-%m-%d")
+                and DATE_FORMAT( ucu.create_time, "%Y-%m-%d" ) &lt;= DATE_FORMAT(#{maps.endCreateTime}, "%Y-%m-%d")
                 )
             </if >
             <if test = "maps.registerCode != null  and  maps.registerCode !=''  " >
                 AND u.register_code = #{maps.registerCode}
             </if >
             <if test = "maps.status != null" >
-                AND u.STATUS = #{maps.status}
+                AND ucu.status = #{maps.status}
             </if >
             <if test = "maps.companyId != null and maps.companyId != '' " >
                 AND company.company_id = #{maps.companyId}

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

@@ -216,9 +216,9 @@ public class AppLoginController extends AppBaseController{
             return R.error("用户数据不存在");
         }
         FsUser userMap = findUserByPhone(param.getPhone());
-        if (userMap!=null){
-            return R.error("该手机号已绑定其他账号");
-        }
+//        if (userMap!=null){
+//            return R.error("该手机号已绑定其他账号");
+//        }
         user.setPhone(param.getPhone());
         user.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null );
         user.setSource(param.getSource()!= null ? param.getSource() : null);

+ 20 - 12
fs-user-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -3,6 +3,7 @@ package com.fs.app.controller;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.core.date.DateTime;
+import com.fs.app.param.FsUserLoginByCourseMpParam;
 import com.fs.app.param.FsUserLoginByMpParam;
 import com.fs.app.utils.JwtUtils;
 import com.fs.common.core.domain.R;
@@ -101,22 +102,29 @@ public class WxH5MpController {
             WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
             WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
 
-            // 处理用户信息
-            FsUser user = processUserInfo(wxMpUser, company,companyUser,param);
 
-            // 检查用户是否已绑定其他销售
-            FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
-            if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
-                return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
-            }
+            //临时的手动和自动 融合
+            if (param.getProjectId() == null || param.getProjectId() == 0L) {
 
-//            // 处理用户与公司的关系
-//            processUserCompanyRelationship(user, param, companyUser, company);
+                // 处理用户信息
+                FsUser user = processUserInfoByCourseLoginByMp(wxMpUser);
+                // 生成token并返回结果
+                return generateLoginResult(user);
 
+            }else {
+                // 处理用户信息
+                FsUser user = processUserInfo(wxMpUser, company,companyUser,param);
+
+                // 检查用户是否已绑定其他销售
+                FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
+                if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
+                    return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
+                }
+
+                return generateLoginResult(user);
+            }
 
 
-            // 生成token并返回结果
-            return generateLoginResult(user);
         } catch (WxErrorException e) {
             this.logger.error(e.getMessage(), e);
             return R.error("授权失败," + e.getMessage());
@@ -125,7 +133,7 @@ public class WxH5MpController {
 
     @ApiOperation("炮灰小程序-公众号登录转小程序")
     @PostMapping("/courseLoginByMp")
-    public R courseLoginByMp(@Valid @RequestBody FsUserLoginByMpParam param) {
+    public R courseLoginByMp(@Valid @RequestBody FsUserLoginByCourseMpParam param) {
         log.info("=====================进入炮灰小程序-公众号授权登录, 入参: {}", param);
 
         // 参数校验

+ 3 - 3
fs-user-app/src/main/java/com/fs/app/controller/store/AppLoginScrmController.java

@@ -184,9 +184,9 @@ public class AppLoginScrmController extends AppBaseController {
             return R.error("用户数据不存在");
         }
         FsUserScrm userMap = userService.selectFsUserByPhone(param.getPhone());
-        if (userMap!=null){
-            return R.error("该手机号已绑定其他账号");
-        }
+//        if (userMap!=null){
+//            return R.error("该手机号已绑定其他账号");
+//        }
         user.setPhone(param.getPhone());
         userMap = new FsUserScrm();
         userMap.setUserId(user.getUserId());

+ 30 - 0
fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByCourseMpParam.java

@@ -0,0 +1,30 @@
+package com.fs.app.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class FsUserLoginByCourseMpParam implements Serializable {
+    @NotBlank(message = "code参数缺失")
+    private String code;
+    private Long videoId;
+
+    @NotNull(message = "公司id不能为空")
+    @ApiModelProperty(value = "公司id")
+    private Long companyId;
+
+    @NotNull(message = "销售id不能为空")
+    @ApiModelProperty(value = "销售id")
+    private Long companyUserId;
+
+    private String appId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+}

+ 2 - 1
fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByMpParam.java

@@ -20,7 +20,8 @@ public class FsUserLoginByMpParam implements Serializable {
     @NotNull(message = "销售id不能为空")
     @ApiModelProperty(value = "销售id")
     private Long companyUserId;
-    @NotNull(message = "项目ID不能为空")
+
+//    @NotNull(message = "项目ID不能为空")
     @ApiModelProperty(value = "项目ID")
     private Long projectId;