Bladeren bron

更新!

TRX 1 jaar geleden
bovenliggende
commit
5a2faa0c21

+ 10 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/upLoadFile/OssController.java

@@ -5,6 +5,7 @@ import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.netdisk.client.model.file.FileItemModel;
 import com.github.microservice.netdisk.client.model.file.FileStoreModel;
+import com.zhongshu.card.server.core.model.oss.FileUploadFinishParam;
 import com.zhongshu.card.server.core.model.upLoadFile.RemoteBusFile;
 import com.zhongshu.card.server.core.model.upLoadFile.RemoteGetTokenFileParam;
 import com.zhongshu.card.server.core.model.upLoadFile.StsToken;
@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @author TRX
@@ -53,4 +55,12 @@ public class OssController {
     public ResultContent<FileStoreModel> uploadFinish(@RequestBody @Valid FileItemModel param) {
         return netDiskOssService.uploadFinish(param);
     }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "上传完成(多个)", description = "上传完成(多个)")
+    @RequestMapping(value = "uploadFinishMuli", method = {RequestMethod.POST})
+    public ResultContent<List<FileStoreModel>> uploadFinishMuli(@RequestBody @Valid FileUploadFinishParam param) {
+        FileItemModel[] fileItems = param.getFileItems().toArray(new FileItemModel[0]);
+        return netDiskOssService.uploadFinishMuli(fileItems);
+    }
 }

+ 2 - 6
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/DeviceBindDaoImpl.java

@@ -4,8 +4,8 @@ import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
 import com.zhongshu.card.client.model.devices.DeviceBindSearch;
 import com.zhongshu.card.server.core.dao.BaseImpl;
 import com.zhongshu.card.server.core.dao.devices.extend.DeviceBindDaoExtend;
-import com.zhongshu.card.server.core.domain.school.Area;
 import com.zhongshu.card.server.core.domain.devices.DeviceBind;
+import com.zhongshu.card.server.core.domain.school.Area;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -82,11 +82,7 @@ public class DeviceBindDaoImpl extends BaseImpl implements DeviceBindDaoExtend {
 
         if (StringUtils.isNotEmpty(param.getKeyWord())) {
             Pattern pattern = Pattern.compile("^.*" + param.getKeyWord() + ".*$");
-            criteria.orOperator(
-                    Criteria.where("deviceId").regex(pattern),
-                    Criteria.where("deviceName").regex(pattern),
-                    Criteria.where("gateWayId").regex(pattern)
-            );
+            criteria.orOperator(Criteria.where("deviceId").regex(pattern), Criteria.where("deviceName").regex(pattern), Criteria.where("gateWayId").regex(pattern));
         }
         Sort sort = buildSort(param);
         Query query = Query.query(criteria);

+ 23 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/model/oss/FileUploadFinishParam.java

@@ -0,0 +1,23 @@
+package com.zhongshu.card.server.core.model.oss;
+
+import com.github.microservice.netdisk.client.model.file.FileItemModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/11/14
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FileUploadFinishParam {
+
+    @Schema(description = "")
+    private List<FileItemModel> fileItems;
+
+}

+ 6 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/CommonService.java

@@ -18,6 +18,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.Base64;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -70,7 +71,11 @@ public class CommonService {
         Criteria criteria = new Criteria();
         if (where != null) {
             where.forEach((key, value) -> {
-                criteria.and(key).is(value);
+                if (value != null && value instanceof List<?>) {
+                    criteria.and(key).in(value);
+                } else {
+                    criteria.and(key).is(value);
+                }
             });
         }
         Query query = new Query(criteria);

+ 20 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserOrgPermissService.java

@@ -3,6 +3,7 @@ package com.zhongshu.card.server.core.service.org;
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -10,10 +11,12 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
- * 用户机构权限
+ * 用户机构权限 查询
  *
  * @author TRX
  * @date 2024/11/14
@@ -59,4 +62,20 @@ public class UserOrgPermissService extends SuperService {
         return organizationUserServiceImpl.getUserOrgListOids(userId, projectOid);
     }
 
+    /**
+     * 查询用户加入的机构列表
+     *
+     * @param projectOid 项目oid
+     * @param userId     用户userId
+     * @return
+     */
+    public List<Organization> getUserOrgList(String projectOid, String userId) {
+        List<Organization> list = new ArrayList<>();
+        List<OrganizationUser> userOrgList = organizationUserServiceImpl.getUserOrgList(userId, projectOid);
+        if (ObjectUtils.isNotEmpty(userOrgList)) {
+            list = userOrgList.stream().map(it -> it.getOrganization()).collect(Collectors.toList());
+        }
+        return list;
+    }
+
 }

+ 30 - 6
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/oss/NetDiskOssBusService.java

@@ -15,10 +15,9 @@ import com.zhongshu.card.server.core.model.upLoadFile.*;
 import com.zhongshu.card.server.core.model.upLoadFile.oss.ALiObjectStorage;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -57,7 +56,8 @@ public class NetDiskOssBusService extends SuperService {
         String fileName = param.getFileName();
         List<String[]> allPaths = buildPathByUser(param.getFileNames(), user);
         Collection<String[]> paths = allPaths.parallelStream().map((path) -> {
-            return this.toPlatformFileStoreObjectPath(user, path, isReserveName, fileName);
+            String _fileName = path[(path.length - 1)];
+            return this.toPlatformFileStoreObjectPath(user, path, isReserveName, _fileName);
         }).collect(Collectors.toList());
 
         remoteFile.setAccountId(param.getOid());
@@ -81,6 +81,14 @@ public class NetDiskOssBusService extends SuperService {
         }
     }
 
+    public ResultContent<List<FileStoreModel>> uploadFinishMuli(FileItemModel[] fileItems) {
+        com.github.microservice.netdisk.client.content.ResultContent<List<FileStoreModel>> content = netDiskOssService.uploadFinish(fileItems);
+        if (content.getState() == com.github.microservice.netdisk.client.content.ResultState.Success) {
+            return ResultContent.buildSuccess(content.getContent());
+        } else {
+            return ResultContent.buildFail(content.getMsg());
+        }
+    }
 
     public ResultContent<StsToken> getUploadToken(RemoteBusFile remoteFile) {
 //        PathAssert.validate(remoteFile.getPath());
@@ -97,6 +105,7 @@ public class NetDiskOssBusService extends SuperService {
         // 获取三方持久化对象
 //        final SuperObjectStorageStore objectStorageStore = this.objectStorageStore.getObjectStorageStore(account.getId());
         Collection<String[]> paths = allPaths.parallelStream().map((path) -> {
+            String _fileName = path[(path.length - 1)];
             return this.toPlatformFileStoreObjectPath(user, path, isReserveName, fileName);
         }).collect(Collectors.toList());
         StsToken stsToken = aliObjectStorageStore.getStsToken(paths);
@@ -113,7 +122,11 @@ public class NetDiskOssBusService extends SuperService {
     public String[] buildUploadFilePathFromLatestVersion(final UserAccount account, String[] sourcePath, Boolean isReserveName, String fileName) {
         //文件版本号
         final Long fileVersionNumber = 1L;
-        return PlatformFileItem.builder().accountId(account.getId()) //账户
+        String countId = "file";
+        if (ObjectUtils.isNotEmpty(account)) {
+            countId = account.getId();
+        }
+        return PlatformFileItem.builder().accountId(countId) //账户
                 .versionNumber(fileVersionNumber)//版本
                 .platformStoreType(PlatformStoreType.Store) //类型
                 .sourcePath(sourcePath)//原路径
@@ -122,9 +135,15 @@ public class NetDiskOssBusService extends SuperService {
 
     public List<String[]> buildPathByUser(RemoteBusFile param, UserAccount user) {
         List<String[]> paths = new ArrayList<>();
+        String userId;
+        if (ObjectUtils.isNotEmpty(user)) {
+            userId = user.getId();
+        } else {
+            userId = "file";
+        }
         param.getFileNames().forEach(it -> {
             String[] split = it.split("\\.");
-            List<String> path = Lists.newArrayList(new String[]{user.getId(), UUID.randomUUID().toString() + "." + split[1]});
+            List<String> path = Lists.newArrayList(new String[]{userId, UUID.randomUUID().toString() + "." + split[1]});
             paths.add(path.toArray(new String[0]));
         });
         return paths;
@@ -134,7 +153,12 @@ public class NetDiskOssBusService extends SuperService {
         List<String[]> paths = new ArrayList<>();
         fileNames.forEach(it -> {
             String[] split = it.split("\\.");
-            List<String> path = Lists.newArrayList(new String[]{user.getId(), UUID.randomUUID().toString() + "." + split[1]});
+            List<String> path = null;
+            if (ObjectUtils.isNotEmpty(user)) {
+                path = Lists.newArrayList(new String[]{user.getId(), UUID.randomUUID().toString() + "." + split[1]});
+            } else {
+                path = Lists.newArrayList(new String[]{UUID.randomUUID().toString() + "." + split[1]});
+            }
             paths.add(path.toArray(new String[0]));
         });
         return paths;

+ 7 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/ProjectPaySettingServiceImpl.java

@@ -785,6 +785,13 @@ public class ProjectPaySettingServiceImpl extends SuperService {
                 appConf.setSecretKey(model.getNotifySecret());
                 appConf.setNotifyUrl(model.getNotifyUrl());
 
+                // 提现参数
+                appConf.setWithdrawAppId(model.getWithdrawAppId());
+                appConf.setWithdrawAppKey(model.getWithdrawAppKey());
+                appConf.setWithdrawSysId(model.getWithdrawSysid());
+                appConf.setWithdrawMchId(model.getWithdrawMid());
+                appConf.setAppType(model.getWithdrawAppType());
+
                 accountModel.setConf(appConf);
             }
 

+ 37 - 16
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/PayCallService.java

@@ -11,14 +11,17 @@ import com.zhongshu.card.client.model.payment.ExpenseRefundParam;
 import com.zhongshu.card.client.type.LogsLevel;
 import com.zhongshu.card.client.type.MessageType;
 import com.zhongshu.card.client.type.RefundState;
+import com.zhongshu.card.client.type.payment.SettlementState;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.client.utils.PayExceptionToShowUtil;
 import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
 import com.zhongshu.card.server.core.dao.payment.PaymentProcessDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.paySetting.ProjectMainPaySetting;
 import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
 import com.zhongshu.card.server.core.domain.payment.PaymentProcess;
 import com.zhongshu.card.server.core.domain.schedule.ScheduleTaskConfig;
+import com.zhongshu.card.server.core.service.base.CommonService;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.orgManager.ProjectBindOrgServiceImpl;
 import com.zhongshu.card.server.core.service.pay.BalancePayService;
@@ -35,9 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
@@ -77,6 +78,9 @@ public class PayCallService extends SuperService {
     @Autowired
     private ProjectMainPaySettingService projectMainPaySettingService;
 
+    @Autowired
+    private CommonService commonService;
+
     /**
      * 统一调用支付服务
      *
@@ -438,19 +442,17 @@ public class PayCallService extends SuperService {
             Long endTime = projectMainPaySettingService.getCurrentRunTime(projectOid, paymentType);
 
             // 项目包含的机构列表
-            ResultContent<List<OrganizationMiniModel>> content = projectBindOrgService.getProjectOrgList(projectOid);
-            if (content.isSuccess()) {
-                List<OrganizationMiniModel> list = content.getContent();
-                if (ObjectUtils.isNotEmpty(list)) {
-                    for (OrganizationMiniModel organizationMiniModel : list) {
-                        com.github.microservice.pay.client.ret.ResultContent resultContent = settleService.settle(projectOid, organizationMiniModel.getOid(), endTime, remark, paymentType);
-                        //TODO 标记订单已结算
-                        if (resultContent.getState() == ResultState.Success) {
-                            Object object = resultContent.getContent();
-                            if (object != null) {
-                                Set<String> orderNoSet = (Set<String>) object;
-                                markOrderSettlement(orderNoSet);
-                            }
+            List<Organization> list = projectBindOrgService.getProjectBindOrgs(projectOid);
+            if (ObjectUtils.isNotEmpty(list)) {
+                for (Organization organization : list) {
+                    com.github.microservice.pay.client.ret.ResultContent resultContent = settleService.settle(projectOid, organization.getOid(), endTime, remark, paymentType);
+                    //TODO 标记订单已结算
+                    if (resultContent.getState() == ResultState.Success) {
+                        Object object = resultContent.getContent();
+                        if (object != null) {
+                            Set<String> orderNoSet = (Set<String>) object;
+                            //  标记订单已结算
+                            markOrderSettlement(orderNoSet);
                         }
                     }
                 }
@@ -459,9 +461,28 @@ public class PayCallService extends SuperService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 标记订单已结算
+     *
+     * @param orderNoSet
+     */
     private void markOrderSettlement(Set<String> orderNoSet) {
         if (orderNoSet != null && !orderNoSet.isEmpty()) {
+            List<String> orderNoList = new ArrayList<>(orderNoSet);
+            Map<String, Object> where = new HashMap<>();
+            where.put("paymentNo", orderNoList);
+
+            Map<String, Object> standardData = new HashMap<>();
+            standardData.put("settlementState", SettlementState.AlreadySettled);
+            standardData.put("settlementTime", System.currentTimeMillis());
+
+            // 消费订单
+            commonService.updateData(where, standardData, ExpenseFlow.class.getSimpleName());
 
+            Map<String, Object> refundWhere = new HashMap<>();
+            refundWhere.put("refundNo", orderNoList);
+            // 退款已结算
+            commonService.updateData(refundWhere, standardData, ExpenseFlow.class.getSimpleName());
         }
     }