瀏覽代碼

更新!

TRX 1 年之前
父節點
當前提交
e227adc574

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/ExpenseFlowSearch.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.payment;
 
 import com.github.microservice.types.OrderModeType;
+import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.client.model.base.SuperSearch;
 import com.github.microservice.types.OrderState;
 import com.zhongshu.card.client.type.RefundState;
@@ -67,6 +68,9 @@ public class ExpenseFlowSearch extends SuperSearch {
     @Schema(description = "支付方式")
     private String paymentWay;
 
+    @Schema(description = "支付方式")
+    private PaymentType paymentType;
+
     @Schema(description = "消费金额(单位:分)")
     private BigDecimal payAmount;
 

+ 16 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/base/ProjectCodeParam.java

@@ -0,0 +1,16 @@
+package com.zhongshu.card.client.openApi.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Data
+public class ProjectCodeParam {
+
+    @Schema(description = "项目编码")
+    private String projectCode;
+
+}

+ 28 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/base/SuperAPIModel.java

@@ -0,0 +1,28 @@
+package com.zhongshu.card.client.openApi.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author TRX
+ * @date 2024/11/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SuperAPIModel implements Serializable {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "创建时间")
+    private Long createTime;
+
+    @Schema(description = "修改时间")
+    private Long updateTime;
+
+}

+ 22 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/base/SuperOpenAPIParam.java

@@ -0,0 +1,22 @@
+package com.zhongshu.card.client.openApi.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SuperOpenAPIParam extends ProjectCodeParam {
+
+    @Schema(description = "第几页,从0开始,默认:0")
+    private Integer number = 0;
+
+    @Schema(description = "每页查询多少条数据,大于0的整数,如:10")
+    private Integer size = 10;
+}

+ 138 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/model/ExpenseFlowOpenApiModel.java

@@ -0,0 +1,138 @@
+package com.zhongshu.card.client.openApi.model;
+
+import com.github.microservice.types.OrderState;
+import com.github.microservice.types.payment.PaymentDeviceType;
+import com.zhongshu.card.client.model.school.CardInfoModel;
+import com.zhongshu.card.client.openApi.base.SuperAPIModel;
+import com.zhongshu.card.client.type.RefundState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ExpenseFlowOpenApiModel extends SuperAPIModel {
+    //-----------------------------订单信息 start---------------------
+
+    @Schema(description = "订单的总体状态")
+    private OrderState orderType;
+
+    private String orderTypeStr;
+
+    public String getOrderTypeStr() {
+        if (orderType != null) {
+            return orderType.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "用户userId")
+    private String userId;
+
+    @Schema(description = "用户名称")
+    private String userName;
+
+    @Schema(description = "消费机设备ID")
+    private String deviceId;
+
+    @Schema(description = "所属项目的code")
+    private String projectCode;
+
+    @Schema(description = "订单所属的商户")
+    private String shopOid;
+
+    @Schema(description = "订单所属的学校")
+    private String schoolOid;
+
+    @Schema(description = "卡片的编号,也是终端刷卡的 卡号")
+    private String cardNo;
+
+    @Schema(description = "卡片信息")
+    private CardInfoModel cardInfo;
+
+    @Schema(description = "消费类型,如:餐饮消费")
+    private String payType;
+
+    @Schema(description = "年份,如: 2024")
+    private Integer year;
+
+    @Schema(description = "月份,如: 6")
+    private Integer month;
+
+    @Schema(description = "消费订单号")
+    private String orderNo;
+
+    @Schema(description = "支付订单号")
+    private String paymentNo;
+
+    @Schema(description = "消费创建时间")
+    private String paymentTime;
+
+    @Schema(description = "支付方式")
+    private String paymentWay;
+
+    @Schema(description = "消费金额(单位:分)")
+    private BigDecimal payAmount;
+
+    @Schema(description = "订单是否创建成功")
+    private Boolean isCreateSuccess = Boolean.TRUE;
+
+    @Schema(description = "终端支付设备和方式")
+    private PaymentDeviceType paymentDeviceType;
+
+    @Schema(description = "消费地点")
+    private String placeName;
+
+    //------------------支付结果 start-------------------------
+
+    @Schema(description = "支付订单状态")
+    private String paymentStatus;
+
+    @Schema(description = "支付是否成功")
+    private Boolean isPaySuccess;
+
+    @Schema(description = "支付结果备注")
+    private String payRemark;
+
+    //-----------------------退款 start--------------------------
+    @Schema(description = "是否退款")
+    private Boolean isRefund;
+
+    @Schema(description = "退款状态")
+    private RefundState refundState;
+
+    private String refundStateStr;
+
+    public String getRefundStateStr() {
+        if (refundState != null) {
+            return refundState.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "退款金额")
+    private BigDecimal refundAMount;
+
+    @Schema(description = "操作退款用户userId")
+    private String refundUserId;
+
+    @Schema(description = "退款申请人")
+    private String applicant;
+
+    @Schema(description = "申请退款时间")
+    private Long refundTime;
+
+    @Schema(description = "申请退款备注")
+    private String refundRemark;
+
+    @Schema(description = "退款处理备注")
+    private String refuseRemark;
+}

+ 29 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/params/ExpenseFlowOpenApiSearch.java

@@ -0,0 +1,29 @@
+package com.zhongshu.card.client.openApi.params;
+
+import com.github.microservice.types.OrderModeType;
+import com.github.microservice.types.payment.PaymentType;
+import com.zhongshu.card.client.openApi.base.SuperOpenAPIParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ExpenseFlowOpenApiSearch extends SuperOpenAPIParam {
+
+    @Schema(description = "消费订单号")
+    private String orderNo;
+
+    @Schema(description = "支付订单号")
+    private String paymentNo;
+
+    @Schema(description = "支付方式")
+    private PaymentType paymentType;
+
+}

+ 0 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/openAPI/AccessRecordController.java

@@ -1,14 +1,11 @@
 package com.zhongshu.card.server.core.controller.openAPI;
 
 import com.zhongshu.opengateway.client.model.param.AccessRecordSearchParam;
-import com.zhongshu.opengateway.client.model.param.OpenApiSearchParam;
 import com.zhongshu.opengateway.client.model.ret.ResultContent;
 import com.zhongshu.opengateway.client.service.AccessRecordService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.experimental.Delegate;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Pageable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;

+ 49 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/openAPI/ExpenseFlowOpenApiController.java

@@ -0,0 +1,49 @@
+package com.zhongshu.card.server.core.controller.openAPI;
+
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.models.device.DevicePerQuery;
+import com.github.microservice.models.device.UserPerQuery;
+import com.github.microservice.net.ResultContent;
+import com.github.microservice.types.OrderModeType;
+import com.zhongshu.card.client.model.payment.ExpenseFlowModel;
+import com.zhongshu.card.client.model.payment.ExpenseFlowSearch;
+import com.zhongshu.card.client.openApi.model.ExpenseFlowOpenApiModel;
+import com.zhongshu.card.client.openApi.params.ExpenseFlowOpenApiSearch;
+import com.zhongshu.card.server.core.service.devices.DevicePermissIotService;
+import com.zhongshu.card.server.core.service.devices.DeviceUseRecordService;
+import com.zhongshu.card.server.core.service.openAPI.ExpenseFlowOpenApiService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * @author TRX
+ * @date 2024/6/5
+ */
+@RestController
+@RequestMapping("/openAPI/v1/projectManager")
+@Tag(name = "openAPI-订单管理")
+public class ExpenseFlowOpenApiController {
+
+    @Autowired
+    private ExpenseFlowOpenApiService expenseFlowOpenApiService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "消费列表-分页查询", description = "消费列表-分页查询")
+    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
+    public ResultContent<Page<ExpenseFlowOpenApiModel>> page(@RequestBody ExpenseFlowOpenApiSearch param) {
+        return expenseFlowOpenApiService.page(param);
+    }
+
+}

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/impl/ExpenseFlowDaoImpl.java

@@ -122,6 +122,10 @@ public class ExpenseFlowDaoImpl extends BaseImpl implements ExpenseFlowDaoExtend
         if (ObjectUtils.isNotEmpty(param.getOrderTypes())) {
             criteria.and("orderTypes").in(param.getOrderTypes());
         }
+        // 支付方式
+        if (param.getPaymentType() != null) {
+            criteria.and("paymentType").is(param.getPaymentType());
+        }
 
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();

+ 23 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/SuperService.java

@@ -5,8 +5,10 @@ import com.github.microservice.auth.security.helper.AuthHelper;
 import com.zhongshu.card.client.model.base.SuperParam;
 import com.zhongshu.card.client.model.base.SuperSearch;
 import com.zhongshu.card.client.model.operLogs.OperationLogsAddParam;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
+import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
@@ -38,6 +40,9 @@ public abstract class SuperService {
     @Autowired
     private AuthClientSecurityAuthenticationHelper authClientSecurityAuthenticationHelper;
 
+    @Autowired
+    private OrganizationDao organizationDao;
+
     /**
      * 得到当前的用户ID
      *
@@ -80,8 +85,8 @@ public abstract class SuperService {
         return null;
     }
 
-    public String getCurrentAppId(){
-        return authClientSecurityAuthenticationHelper.getParameter(new String[]{"appId","appid"});
+    public String getCurrentAppId() {
+        return authClientSecurityAuthenticationHelper.getParameter(new String[]{"appId", "appid"});
     }
 
     /**
@@ -306,4 +311,20 @@ public abstract class SuperService {
     public OperationLogsAddParam initLog(String userId) {
         return CommonUtil.initLog(request, userId);
     }
+
+    /**
+     * 根据结构code查询oid
+     *
+     * @param code
+     * @return
+     */
+    public String getOidByCode(String code) {
+        if (StringUtils.isNotEmpty(code)) {
+            Organization organization = organizationDao.findTopByCode(code);
+            if (ObjectUtils.isNotEmpty(organization)) {
+                return organization.getOid();
+            }
+        }
+        return "";
+    }
 }

+ 71 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/ExpenseFlowOpenApiService.java

@@ -0,0 +1,71 @@
+package com.zhongshu.card.server.core.service.openAPI;
+
+import com.github.microservice.components.data.base.util.PageEntityUtil;
+import com.github.microservice.net.ResultContent;
+import com.github.microservice.types.OrderModeType;
+import com.zhongshu.card.client.model.payment.ExpenseFlowModel;
+import com.zhongshu.card.client.model.payment.ExpenseFlowSearch;
+import com.zhongshu.card.client.openApi.model.ExpenseFlowOpenApiModel;
+import com.zhongshu.card.client.openApi.params.ExpenseFlowOpenApiSearch;
+import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
+import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+/**
+ * 订单相关的 openAPI
+ *
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Slf4j
+@Service
+public class ExpenseFlowOpenApiService extends SuperService {
+
+    @Autowired
+    private ExpenseFlowDao expenseFlowDao;
+
+    /**
+     * 订单列表
+     *
+     * @param apiSearch
+     * @return
+     */
+    public ResultContent<Page<ExpenseFlowOpenApiModel>> page(ExpenseFlowOpenApiSearch apiSearch) {
+        if (StringUtils.isEmpty(apiSearch.getProjectCode())) {
+            return ResultContent.buildFail("projectCode不能为空");
+        }
+        String projectOid = getOidByCode(apiSearch.getProjectCode());
+        if (StringUtils.isEmpty(projectOid)) {
+            projectOid = "unKnow";
+        }
+        ExpenseFlowSearch param = new ExpenseFlowSearch();
+        BeanUtils.copyProperties(apiSearch, param);
+        param.setIsPaySuccess(Boolean.TRUE);
+        param.setOrderModeType(OrderModeType.Consume);
+        param.setProjectOid(projectOid);
+
+        Pageable pageable = PageRequest.of(apiSearch.getNumber(), apiSearch.getSize());
+        Page<ExpenseFlow> page = expenseFlowDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    //----------------------------数据默认转换 start-----------------
+
+    public ExpenseFlowOpenApiModel toModel(ExpenseFlow entity) {
+        ExpenseFlowOpenApiModel model = new ExpenseFlowOpenApiModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}