Browse Source

代理商改造

hurixing 4 months ago
parent
commit
c2042a6ae1
22 changed files with 428 additions and 40 deletions
  1. 1 1
      hcp-app/src/main/java/com/yingyangfly/app/controller/LearningPackageController.java
  2. 3 0
      hcp-core/src/main/java/com/yingyangfly/core/domain/SysUser.java
  3. 11 0
      hcp-core/src/main/java/com/yingyangfly/core/domain/SysUserOrg.java
  4. 5 0
      hcp-core/src/main/java/com/yingyangfly/core/dto/CurrentLoginUser.java
  5. 9 0
      hcp-core/src/main/java/com/yingyangfly/core/mapper/SysUserOrgMapper.java
  6. 3 1
      hcp-core/src/main/java/com/yingyangfly/core/service/LearnPackageService.java
  7. 17 0
      hcp-core/src/main/java/com/yingyangfly/core/service/SysUserOrgService.java
  8. 6 1
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/AppUserService.java
  9. 12 4
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/EquipmentServiceImpl.java
  10. 53 10
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/LearnPackageServiceImpl.java
  11. 7 2
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/PayServiceImpl.java
  12. 17 7
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/ReviewTaskServiceImpl.java
  13. 49 5
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/SysOrgService.java
  14. 38 0
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/SysUserOrgServiceImpl.java
  15. 1 0
      hcp-core/src/main/java/com/yingyangfly/core/service/impl/SysUserService.java
  16. 2 0
      hcp-core/src/main/java/com/yingyangfly/core/vo/SysUserVo.java
  17. 2 2
      hcp-platform/src/main/java/com/yingyangfly/platform/controller/DoctorController.java
  18. 6 1
      hcp-platform/src/main/java/com/yingyangfly/platform/controller/EquipmentController.java
  19. 11 2
      hcp-platform/src/main/java/com/yingyangfly/platform/controller/LearningPackageController.java
  20. 6 0
      hcp-platform/src/main/java/com/yingyangfly/platform/sys/controller/SysOrgController.java
  21. 35 0
      hcp-platform/src/main/java/com/yingyangfly/platform/sys/controller/SysUserOrgController.java
  22. 134 4
      hcp-platform/src/test/java/com/yingyangfly/core/service/AppUserServiceTest.java

+ 1 - 1
hcp-app/src/main/java/com/yingyangfly/app/controller/LearningPackageController.java

@@ -47,7 +47,7 @@ public class LearningPackageController {
     @PostMapping("/list")
     @TraceLog
     public ResultResponse list(String  packageType,String packageName) {
-        List<LearningPackage> learningPackageList = learnPackageService.list(packageType, packageName, "0");
+        List<LearningPackage> learningPackageList = learnPackageService.list(packageType, packageName, "0",null);
 
         List<LearningPackageVo> learningPackageVoList = EntityConverter.convertList(learningPackageList, LearningPackageVo.class);
 

+ 3 - 0
hcp-core/src/main/java/com/yingyangfly/core/domain/SysUser.java

@@ -58,6 +58,9 @@ public class SysUser extends BaseEntity {
     @ApiModelProperty(value = "身份证号")
     @JsonSerialize(using = Sm4JacksonSerialize.class)
     private String idCard;
+
+    @ApiModelProperty(value = "是否代理商")
+    private String agentStatus;
 }
 
 

+ 11 - 0
hcp-core/src/main/java/com/yingyangfly/core/domain/SysUserOrg.java

@@ -0,0 +1,11 @@
+package com.yingyangfly.core.domain;
+
+import lombok.Data;
+
+@Data
+public class SysUserOrg {
+
+    private Long userId;
+
+    private Long orgId;
+}

+ 5 - 0
hcp-core/src/main/java/com/yingyangfly/core/dto/CurrentLoginUser.java

@@ -96,6 +96,11 @@ public class CurrentLoginUser implements UserDetails {
      */
     private String orgName;
 
+    /**
+     * 是否代理商
+     */
+    private String agentStatus;
+
 
 
     @Override

+ 9 - 0
hcp-core/src/main/java/com/yingyangfly/core/mapper/SysUserOrgMapper.java

@@ -0,0 +1,9 @@
+package com.yingyangfly.core.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yingyangfly.core.domain.SysUserOrg;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysUserOrgMapper extends BaseMapper<SysUserOrg> {
+}

+ 3 - 1
hcp-core/src/main/java/com/yingyangfly/core/service/LearnPackageService.java

@@ -12,7 +12,7 @@ import java.util.Map;
  * @date 2023/8/14 0014 19:42
  */
 public interface LearnPackageService {
-    List<LearningPackage> list(String  packageType,String packageName,String status);
+    List<LearningPackage> list(String  packageType,String packageName,String status,String orgCode);
 
     void save(LearningPackage learningPackage);
 
@@ -23,4 +23,6 @@ public interface LearnPackageService {
     List<LearningPackage> getList(String orgCode,String status);
 
     List<LearningPackage> tencentLearnPackage();
+
+    List<LearningPackage> listBackstage(String  packageType,String packageName,String status,String orgCode);
 }

+ 17 - 0
hcp-core/src/main/java/com/yingyangfly/core/service/SysUserOrgService.java

@@ -0,0 +1,17 @@
+package com.yingyangfly.core.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yingyangfly.core.domain.SysUserOrg;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+public interface SysUserOrgService extends IService<SysUserOrg> {
+
+    List<SysUserOrg> selectList(SysUserOrg sysUserOrg);
+
+    boolean insertUserOrgList(List<SysUserOrg> sysUserOrgs);
+
+    boolean del(SysUserOrg sysUserOrg);
+}

+ 6 - 1
hcp-core/src/main/java/com/yingyangfly/core/service/impl/AppUserService.java

@@ -509,7 +509,12 @@ public class AppUserService extends ServiceImpl<AppUserMapper, AppUser> implemen
         if(!StringUtils.isEmpty(appUser.getStatus())){
             queryWrapper.in("status",appUser.getStatus().split(","));
         }
-        queryWrapper.eq("org_code", tokenUtil.getCurrentUser().getOrgCode());
+        if (StringUtils.isEmpty(appUser.getOrgCode())){
+            queryWrapper.eq("org_code", tokenUtil.getCurrentUser().getOrgCode());
+        }else {
+            queryWrapper.eq("org_code", appUser.getOrgCode());
+        }
+
         SysUser sysUser = sysUserMapper.selectById(tokenUtil.getCurrentUser().getUserId());
         if ("doctor".equals(sysUser.getRoleCodes())){
             if (sysUser.getTitle().equals("4")){

+ 12 - 4
hcp-core/src/main/java/com/yingyangfly/core/service/impl/EquipmentServiceImpl.java

@@ -49,8 +49,12 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
         Equipment one = getOne(new QueryWrapper<Equipment>().eq("sn",equipment.getSn()));
         if(equipment.getId()==null){
             Assert.isTrue(one==null,"设备编号重复");
-            equipment.setOrgName(currentUser.getOrgName());
-            equipment.setOrgCode(currentUser.getOrgCode());
+            if (StringUtils.isEmpty(equipment.getOrgCode())){
+                equipment.setOrgCode(currentUser.getOrgCode());
+            }
+            if (StringUtils.isEmpty(equipment.getOrgName())){
+                equipment.setOrgName(currentUser.getOrgName());
+            }
             equipment.setCreateTime(new Date());
             equipment.setUpdateTime(new Date());
             equipmentMapper.insert(equipment);
@@ -58,8 +62,12 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
             if(one!=null){
                 Assert.isTrue(one.getId().equals(equipment.getId()),"设备编号重复");
             }
-            equipment.setOrgName(currentUser.getOrgName());
-            equipment.setOrgCode(currentUser.getOrgCode());
+            if (StringUtils.isEmpty(equipment.getOrgCode())){
+                equipment.setOrgCode(currentUser.getOrgCode());
+            }
+            if (StringUtils.isEmpty(equipment.getOrgName())){
+                equipment.setOrgName(currentUser.getOrgName());
+            }
             equipment.setUpdateTime(new Date());
             equipmentMapper.updateById(equipment);
         }

+ 53 - 10
hcp-core/src/main/java/com/yingyangfly/core/service/impl/LearnPackageServiceImpl.java

@@ -43,8 +43,11 @@ public class LearnPackageServiceImpl implements LearnPackageService {
     private SysOrgService sysOrgService;
 
     @Override
-    public List<LearningPackage> list(String packageType, String packageName, String status) {
-        List<LearningPackage> learningPackages = queryLearningPackages(packageType, packageName, status, tokenUtil.getUser().getSysUser().getOrgCode());
+    public List<LearningPackage> list(String packageType, String packageName, String status,String orgCode) {
+        if (StringUtils.isEmpty(orgCode)) {
+            orgCode = tokenUtil.getUser().getSysUser().getOrgCode();
+        }
+        List<LearningPackage> learningPackages = queryLearningPackages(packageType, packageName, status, orgCode);
         if (CollectionUtils.isEmpty(learningPackages)) {
             learningPackages = queryLearningPackages(packageType, packageName, status, "system");
         }
@@ -84,25 +87,47 @@ public class LearnPackageServiceImpl implements LearnPackageService {
             learningPackage.setPrice(aLong);
         }
         CurrentLoginUser currentUser = tokenUtil.getCurrentUser();
-        if (!currentUser.getOrgCode().equals("system")) {
-            SysOrg oryCodeSysOrg = sysOrgService.getOryCodeSysOrg(currentUser.getOrgCode());
-            if ("1".equals(oryCodeSysOrg.getDealPackageStatus())) {
-                throw new RuntimeException("权限不足,请联系管理员");
+        if(StringUtils.isEmpty(learningPackage.getOrgCode())) {
+            if (!currentUser.getOrgCode().equals("system")) {
+                SysOrg oryCodeSysOrg = sysOrgService.getOryCodeSysOrg(currentUser.getOrgCode());
+                if ("1".equals(oryCodeSysOrg.getDealPackageStatus())) {
+                    throw new RuntimeException("权限不足,请联系管理员");
+                }
+            }
+        }else {
+            if (!learningPackage.getOrgCode().equals("system")) {
+                SysOrg oryCodeSysOrg = sysOrgService.getOryCodeSysOrg(learningPackage.getOrgCode());
+                if ("1".equals(oryCodeSysOrg.getDealPackageStatus())) {
+                    throw new RuntimeException("权限不足,请联系管理员");
+                }
             }
         }
+
         if(learningPackage.getId()!=null){
             LearningPackage learningPackage1 = learningPackagMapper.selectById(learningPackage.getId());
-            Assert.isTrue(learningPackage !=null,"套餐不存在");
-            if (!learningPackage1.getOrgCode().equals(currentUser.getOrgCode())){
-                throw new RuntimeException("权限不足,请联系管理员");
-            }
+            Assert.isTrue(learningPackage1 !=null,"套餐不存在");
+//            if (!learningPackage1.getOrgCode().equals(currentUser.getOrgCode())){
+//                throw new RuntimeException("权限不足,请联系管理员");
+//            }
             learningPackage.setUpdateTime(new Date());
             learningPackage.setUpdateBy(currentUser.getUsername());
+            if (StringUtils.isEmpty(learningPackage.getOrgCode())){
+                learningPackage.setOrgCode(currentUser.getOrgCode());
+            }
+            if (StringUtils.isEmpty(learningPackage.getOrgName())){
+                learningPackage.setOrgName(currentUser.getOrgName());
+            }
             learningPackagMapper.updateById(learningPackage);
         }else{
             learningPackage.setStatus("0");
             learningPackage.setCreateTime(new Date());
             learningPackage.setCreateBy(currentUser.getUsername());
+            if (StringUtils.isEmpty(learningPackage.getOrgCode())){
+                learningPackage.setOrgCode(currentUser.getOrgCode());
+            }
+            if (StringUtils.isEmpty(learningPackage.getOrgName())){
+                learningPackage.setOrgName(currentUser.getOrgName());
+            }
             learningPackagMapper.insert(learningPackage);
         }
     }
@@ -160,4 +185,22 @@ public class LearnPackageServiceImpl implements LearnPackageService {
         lambdaQueryWrapper.eq(LearningPackage::getOrgCode,"system");
         return learningPackagMapper.selectList(lambdaQueryWrapper);
     }
+
+    @Override
+    public List<LearningPackage> listBackstage(String packageType, String packageName, String status, String orgCode) {
+        if (StringUtils.isEmpty(orgCode)) {
+            orgCode = tokenUtil.getUser().getSysUser().getOrgCode();
+        }
+        List<LearningPackage> learningPackages = queryLearningPackages(packageType, packageName, status, orgCode);
+
+        for (LearningPackage learningPackage : learningPackages) {
+            learningPackage.setPriceYUAN(AmountUtils.F2Y4STR(learningPackage.getPrice()));
+            String startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date());
+            learningPackage.setStartTime(startTime);
+            Date endDate = DateUtils.addDays(new Date(), learningPackage.getDays());
+            learningPackage.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, endDate));
+        }
+
+        return learningPackages;
+    }
 }

+ 7 - 2
hcp-core/src/main/java/com/yingyangfly/core/service/impl/PayServiceImpl.java

@@ -273,10 +273,15 @@ public class PayServiceImpl<createWXOrder> implements PayService {
         if(StringUtils.isNotBlank(payOrder.getPayOrderId())){
             queryWrapper.eq("pay_order_id",payOrder.getPayOrderId());
         }
-        if(StringUtils.isNotBlank(payOrder.getMobile())){
+        if (StringUtils.isEmpty(payOrder.getOrgCode())){
+            queryWrapper.eq("org_code", currentUser.getOrgCode());
+        }else {
+            queryWrapper.eq("org_code", payOrder.getOrgCode());
+        }
+        if (StringUtils.isNotEmpty(payOrder.getMobile())) {
             queryWrapper.eq("mobile",Sm4Util.encrypt(payOrder.getMobile()));
         }
-        queryWrapper.eq("org_code",currentUser.getOrgCode());
+
         queryWrapper.orderByDesc("send_pay_time");
         Page<PayOrder> page = new Page(payOrder.getPage(), payOrder.getLimit());
         IPage<PayOrder> payOrderPage = payOrderMapper.selectPage(page, queryWrapper);

+ 17 - 7
hcp-core/src/main/java/com/yingyangfly/core/service/impl/ReviewTaskServiceImpl.java

@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -37,17 +38,17 @@ import java.util.stream.Collectors;
 @Slf4j
 public class ReviewTaskServiceImpl extends ServiceImpl<ReviewTaskMapper, ReviewTask> implements ReviewTaskService {
 
-    @Autowired
+    @Resource
     private ReviewTaskMapper reviewTaskMapper;
-    @Autowired
+    @Resource
     private TokenUtil tokenUtil;
-    @Autowired
+    @Resource
     private ReviewService reviewService;
 
-    @Autowired
+    @Resource
     private AppUserMapper appUserMapper;
 
-    @Autowired
+    @Resource
     MsgWarnService msgWarnService;
 
 
@@ -144,6 +145,10 @@ public class ReviewTaskServiceImpl extends ServiceImpl<ReviewTaskMapper, ReviewT
             newTask.setReviewTaskName(item+"测评任务");
             newTask.setCreateTime(new Date());
             newTask.setStatus("0");
+            if (StringUtils.isEmpty(reviewTask.getOrgCode())){
+                newTask.setOrgCode(reviewTask.getOrgCode());
+                newTask.setOrgName(reviewTask.getOrgName());
+            }
             reviewTaskMapper.insert(newTask);
         });
 //        ReviewTask reviewTask2 = new ReviewTask();
@@ -212,8 +217,13 @@ public class ReviewTaskServiceImpl extends ServiceImpl<ReviewTaskMapper, ReviewT
         warn.setCreateTime(new Date());
         warn.setUpdateTime(new Date());
         warn.setStatus("1");
-        warn.setOrgCode(tokenUtil.getCurrentUser().getOrgCode());
-        warn.setOrgName(tokenUtil.getCurrentUser().getOrgName());
+        if (StringUtils.isEmpty(reviewTask.getOrgCode())){
+            warn.setOrgCode(tokenUtil.getCurrentUser().getOrgCode());
+            warn.setOrgName(tokenUtil.getCurrentUser().getOrgName());
+        } else {
+            warn.setOrgCode(reviewTask.getOrgCode());
+            warn.setOrgName(reviewTask.getOrgName());
+        }
         warn.setMsgType("B");
         msgWarnService.save(warn);
     }

+ 49 - 5
hcp-core/src/main/java/com/yingyangfly/core/service/impl/SysOrgService.java

@@ -7,17 +7,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yingyangfly.common.dto.ResultResponse;
 import com.yingyangfly.core.domain.SysOrg;
+import com.yingyangfly.core.domain.SysUserOrg;
 import com.yingyangfly.core.dto.CurrentLoginUser;
 import com.yingyangfly.core.mapper.SysOrgMapper;
 import com.yingyangfly.core.security.util.TokenUtil;
+import com.yingyangfly.core.service.SysUserOrgService;
 import com.yingyangfly.core.util.EntityConverter;
 import com.yingyangfly.core.vo.HospitalVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 机构也就是租户 业务层
@@ -28,11 +31,14 @@ import java.util.Set;
 @Service
 public class SysOrgService extends ServiceImpl<SysOrgMapper,SysOrg> {
 
-    @Autowired
+    @Resource
     private SysOrgMapper sysOrgMapper;
-    @Autowired
+    @Resource
     private TokenUtil tokenUtil;
 
+    @Resource
+    private SysUserOrgService sysUserOrgService;
+
 
     public ResultResponse saveSysOrg(SysOrg org) {
 
@@ -113,4 +119,42 @@ public class SysOrgService extends ServiceImpl<SysOrgMapper,SysOrg> {
         return hospitalVos;
     }
 
+
+    /**
+     * 机构下拉框
+     */
+    public Set<SysOrg> dropDownOrg() {
+        CurrentLoginUser currentUser = tokenUtil.getCurrentUser();
+        Set<SysOrg> sysOrgSet = new HashSet<>();
+        if (hasPermission()) {
+            sysOrgSet.addAll(baseMapper.selectList(null));
+        }else {
+            if (currentUser.getAgentStatus().equals("1")) {
+                // 是代理商
+                SysUserOrg sysUserOrg = new SysUserOrg();
+                sysUserOrg.setUserId(currentUser.getUserId());
+                List<SysUserOrg> sysUserOrgs = sysUserOrgService.selectList(sysUserOrg);
+                List<Long> orgIds = sysUserOrgs.stream().map(SysUserOrg::getOrgId).distinct().collect(Collectors.toList());
+                if (orgIds.size()>0){
+                    sysOrgSet.addAll(baseMapper.selectBatchIds(orgIds));
+                }
+            }
+            sysOrgSet.add(getOryCodeSysOrg(currentUser.getOrgCode()));
+        }
+        return sysOrgSet;
+    }
+
+
+    public boolean hasPermission() {
+        CurrentLoginUser currentUser = tokenUtil.getCurrentUser();
+
+        // 检查是否包含超级管理员角色
+        if (currentUser.getRoleCodes().contains("super_admin")) {
+            return true;  // 超级管理员拥有权限
+        }
+
+        // 其他情况:无角色或非超级管理员角色
+        return false;
+    }
+
 }

+ 38 - 0
hcp-core/src/main/java/com/yingyangfly/core/service/impl/SysUserOrgServiceImpl.java

@@ -0,0 +1,38 @@
+package com.yingyangfly.core.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yingyangfly.core.domain.SysUserOrg;
+import com.yingyangfly.core.mapper.SysUserOrgMapper;
+import com.yingyangfly.core.service.SysUserOrgService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Slf4j
+@Service
+public class SysUserOrgServiceImpl extends ServiceImpl<SysUserOrgMapper, SysUserOrg> implements SysUserOrgService {
+    @Override
+    public List<SysUserOrg> selectList(SysUserOrg sysUserOrg) {
+        LambdaQueryWrapper<SysUserOrg> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if (sysUserOrg.getUserId() != null) {
+            lambdaQueryWrapper.eq(SysUserOrg::getUserId,sysUserOrg.getUserId());
+        }
+        return baseMapper.selectList(lambdaQueryWrapper);
+    }
+
+    @Override
+    public boolean insertUserOrgList(List<SysUserOrg> sysUserOrgs) {
+        return saveBatch(sysUserOrgs);
+    }
+
+    @Override
+    public boolean del(SysUserOrg sysUserOrg) {
+        int delete = baseMapper.delete(new LambdaQueryWrapper<SysUserOrg>().eq(SysUserOrg::getOrgId, sysUserOrg.getOrgId()).eq(SysUserOrg::getUserId, sysUserOrg.getUserId()));
+        if (delete>0){
+            return true;
+        }
+        return false;
+    }
+}

+ 1 - 0
hcp-core/src/main/java/com/yingyangfly/core/service/impl/SysUserService.java

@@ -183,6 +183,7 @@ public class SysUserService extends  ServiceImpl<SysUserMapper,SysUser> {
         currentLoginUser.setStatus(user.getStatus());
         currentLoginUser.setOrgCode(user.getOrgCode());
         currentLoginUser.setIsOnline(user.getIsOnline() ==null?1:user.getIsOnline());
+        currentLoginUser.setAgentStatus(user.getAgentStatus());
         SysOrg sysOrg = sysOrgService.findByOrgCode(user.getOrgCode());
         String expirationDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, sysOrg.getExpirationDate()) + " 23:59:59";
         if (DateUtils.parseDate(expirationDate).before(new Date())) {

+ 2 - 0
hcp-core/src/main/java/com/yingyangfly/core/vo/SysUserVo.java

@@ -56,6 +56,8 @@ public class SysUserVo {
     private java.util.Date createTime;
     private java.util.Date updateTime;
 
+    private String agentStatus;
+
     private java.lang.String orgCode;
     @com.baomidou.mybatisplus.annotation.TableField(exist = false)
     private java.lang.Integer page;

+ 2 - 2
hcp-platform/src/main/java/com/yingyangfly/platform/controller/DoctorController.java

@@ -71,10 +71,10 @@ public class DoctorController {
     @ApiOperation("修改")
     @PostMapping("/edit")
     @TraceLog
-    public ResultResponse edit(@RequestBody SysUser user){
+    public ResultResponse edit(@RequestBody SysUser user) {
         if (ObjectUtils.isNotNull(user.getPassword())) {
             boolean strongPassword = PasswordValidator.isStrongPassword(user.getPassword());
-            if (!strongPassword){
+            if (!strongPassword) {
                 return ResultResponse.fail("用户密码长度必须大于8位数小于20位数且包含大小写字母,数字,特殊字符(!@#$%^&*)");
             }
         }

+ 6 - 1
hcp-platform/src/main/java/com/yingyangfly/platform/controller/EquipmentController.java

@@ -55,7 +55,12 @@ public class EquipmentController {
         queryWrapper.eq(!StringUtils.isEmpty(equipment.getEquipmentType()),"equipment_type",equipment.getEquipmentType());
         queryWrapper.eq(StrUtil.isNotBlank(equipment.getStatus()),"status",equipment.getStatus());
         queryWrapper.eq(StrUtil.isNotBlank(equipment.getSn()),"sn",equipment.getSn());
-        queryWrapper.eq("org_code",tokenUtil.getCurrentUser().getOrgCode());
+        if (StringUtils.isEmpty(equipment.getOrgCode())){
+            queryWrapper.eq("org_code",tokenUtil.getCurrentUser().getOrgCode());
+        }else {
+            queryWrapper.eq("org_code",equipment.getOrgCode());
+        }
+
 
         Page<Equipment> equipmentPage = equipmentService.page(new Page<>(equipment.getPage(), equipment.getLimit())
                 , queryWrapper);

+ 11 - 2
hcp-platform/src/main/java/com/yingyangfly/platform/controller/LearningPackageController.java

@@ -35,8 +35,17 @@ public class LearningPackageController {
 //    @Log(title = "查询所有套餐")
     @PostMapping("/selectAll")
     @TraceLog
-    public ResultResponse list(String  packageType,String packageName,String status) {
-        List<LearningPackage> learningPackageList = learnPackageService.list(packageType, packageName, status);
+    public ResultResponse list(String  packageType,String packageName,String status,String orgCode) {
+        List<LearningPackage> learningPackageList = learnPackageService.list(packageType, packageName, status,orgCode);
+
+        List<LearningPackageVo> learningPackageVos = EntityConverter.convertList(learningPackageList, LearningPackageVo.class);
+        return ResultResponse.success(learningPackageVos);
+    }
+
+    @PostMapping("/list")
+    @TraceLog
+    public ResultResponse listBackstage(String  packageType,String packageName,String status,String orgCode) {
+        List<LearningPackage> learningPackageList = learnPackageService.listBackstage(packageType, packageName, status,orgCode);
 
         List<LearningPackageVo> learningPackageVos = EntityConverter.convertList(learningPackageList, LearningPackageVo.class);
         return ResultResponse.success(learningPackageVos);

+ 6 - 0
hcp-platform/src/main/java/com/yingyangfly/platform/sys/controller/SysOrgController.java

@@ -102,4 +102,10 @@ public class SysOrgController
     }
 
 
+    @PostMapping("/drop/down")
+    @TraceLog
+    public ResultResponse dropDownOrg() {
+        return ResultResponse.success(sysOrgService.dropDownOrg());
+    }
+
 }

+ 35 - 0
hcp-platform/src/main/java/com/yingyangfly/platform/sys/controller/SysUserOrgController.java

@@ -0,0 +1,35 @@
+package com.yingyangfly.platform.sys.controller;
+
+import com.yingyangfly.common.dto.ResultResponse;
+import com.yingyangfly.core.domain.SysUserOrg;
+import com.yingyangfly.core.service.SysUserOrgService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/system/userOrg")
+public class SysUserOrgController {
+
+    @Resource
+    private SysUserOrgService sysUserOrgService;
+
+    @PostMapping("/list")
+    public ResultResponse list(@RequestBody SysUserOrg sysUserOrg){
+        return ResultResponse.success(sysUserOrgService.selectList(sysUserOrg));
+    }
+
+    @PostMapping("/saveBatch")
+    public ResultResponse saveBatch(@RequestBody List<SysUserOrg> sysUserOrgList) {
+        return ResultResponse.success(sysUserOrgService.insertUserOrgList(sysUserOrgList));
+    }
+
+    @PostMapping("/del")
+    public ResultResponse del(@RequestBody SysUserOrg sysUserOrg){
+        return ResultResponse.success(sysUserOrgService.del(sysUserOrg));
+    }
+}

+ 134 - 4
hcp-platform/src/test/java/com/yingyangfly/core/service/AppUserServiceTest.java

@@ -20,10 +20,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -95,5 +92,138 @@ class AppUserServiceTest {
 
         mentalEnergyTrendService.saveListJobTask();
     }
+
+    @Test
+    public void test2(){
+        // 生成 2 到 99 之间的随机整数
+        for (int i=1; i<=1000; i++){
+            int target = random.nextInt(48) + 2;
+            List<String> equations = generateEquations(4);
+            System.out.println("算式1: " + equations.get(0));
+            System.out.println("算式2: " + equations.get(1));
+            System.out.println("------------------"+i+"-------------------------");
+        }
+    }
+
+    private static final Random random = new Random();
+
+
+    public static List<String> generateEquations(int target) {
+        if (target <= 0 || target >= 100) {
+            throw new IllegalArgumentException("target必须在1-99之间");
+        }
+
+        List<String> equations = new ArrayList<>();
+        String eq1 = generateEquation(target);
+        String eq2;
+
+        // 确保生成两个不同的算式
+        int attempts = 0;
+        do {
+            eq2 = generateEquation(target);
+            attempts++;
+            // 防止无限循环(特别是小target)
+            if (attempts > 50) {
+                // 回退方案:强制生成不同类型的算式
+                if (eq1.contains("+")) eq2 = generateNonAddition(target);
+                else eq2 = generateAddition(target);
+            }
+        } while (eq1.equals(eq2) || calculate(eq1) != calculate(eq2));
+
+        equations.add(eq1);
+        equations.add(eq2);
+        return equations;
+    }
+
+    private static String generateEquation(int target) {
+        int operation = random.nextInt(4); // 0:加法, 1:减法, 2:乘法, 3:除法
+        switch (operation) {
+            case 0: return generateAddition(target);
+            case 1: return generateSubtraction(target);
+            case 2: return generateMultiplication(target);
+            default: return generateDivision(target);
+        }
+    }
+
+    // 生成非加法算式(用于解决小target的多样性问题)
+    private static String generateNonAddition(int target) {
+        int operation = random.nextInt(3) + 1; // 1:减法, 2:乘法, 3:除法
+        switch (operation) {
+            case 1: return generateSubtraction(target);
+            case 2: return generateMultiplication(target);
+            default: return generateDivision(target);
+        }
+    }
+
+    private static String generateAddition(int target) {
+        int a = random.nextInt(target - 1) + 1; // 1到target-1
+        int b = target - a;
+        return a + "+" + b;
+    }
+
+    private static String generateSubtraction(int target) {
+        int minC = target + 1;
+        int maxC = Math.min(100, target + 50); // 限制被减数不超过100
+        int c = minC + random.nextInt(maxC - minC + 1);
+        int d = c - target;
+        return c + "-" + d;
+    }
+
+    private static String generateMultiplication(int target) {
+        List<int[]> validFactors = new ArrayList<>();
+
+        // 收集所有满足条件的因子组合
+        for (int i = 1; i <= Math.min(target, 50); i++) { // 限制因子不超过50
+            if (target % i == 0) {
+                int j = target / i;
+                // 确保两个因子都在合理范围内
+                if (i <= 100 && j <= 100) {
+                    validFactors.add(new int[]{i, j});
+                    if (i != j) {
+                        validFactors.add(new int[]{j, i});
+                    }
+                }
+            }
+        }
+
+        // 如果没有有效因子,使用1*target作为备选
+        if (validFactors.isEmpty()) {
+            return "1*" + target;
+        }
+
+        int[] pair = validFactors.get(random.nextInt(validFactors.size()));
+        return pair[0] + "*" + pair[1];
+    }
+
+    private static String generateDivision(int target) {
+        // 计算最大可能的除数(确保被除数<=100)
+        int maxDivisor = Math.min(10, 100 / target);
+        if (maxDivisor < 2) {
+            // 无法生成有效除法,退回乘法
+            return generateMultiplication(target);
+        }
+
+        int divisor = random.nextInt(maxDivisor - 1) + 2; // 2到maxDivisor
+        int dividend = target * divisor;
+        return dividend + "/" + divisor;
+    }
+
+    // 计算算式结果
+    private static int calculate(String equation) {
+        if (equation.contains("+")) {
+            String[] parts = equation.split("\\+");
+            return Integer.parseInt(parts[0]) + Integer.parseInt(parts[1]);
+        } else if (equation.contains("-")) {
+            String[] parts = equation.split("-");
+            return Integer.parseInt(parts[0]) - Integer.parseInt(parts[1]);
+        } else if (equation.contains("*")) {
+            String[] parts = equation.split("\\*");
+            return Integer.parseInt(parts[0]) * Integer.parseInt(parts[1]);
+        } else if (equation.contains("/")) {
+            String[] parts = equation.split("/");
+            return Integer.parseInt(parts[0]) / Integer.parseInt(parts[1]);
+        }
+        return 0;
+    }
     
 }