TRX 1 rok pred
rodič
commit
8aaeb62f4a

+ 0 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/payment/HxzController.java

@@ -38,7 +38,6 @@ public class HxzController {
     @Operation(summary = "用户刷卡综合接口")
     @PostMapping(value = "ConsumTransactions", consumes = MediaType.APPLICATION_JSON_VALUE)
     public ResultContent consumTransactions(@RequestBody ConsumTransactionsModel param) {
-
         return hxzService.consumTransactions(param);
     }
 

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/base/SuperMain.java

@@ -4,6 +4,7 @@ import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.components.data.mongo.mongo.domain.SuperEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.springframework.data.mongodb.core.index.Indexed;
 
 /**
  * @author TRX
@@ -12,6 +13,7 @@ import lombok.Data;
 @Data
 public class SuperMain extends SuperEntity {
 
+    @Indexed
     @Schema(description = "所属机构ID")
     private String oid;
 

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceInfo.java

@@ -10,6 +10,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.index.Indexed;
 import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
@@ -25,6 +26,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
 @AllArgsConstructor
 public class DeviceInfo extends SuperMain {
 
+    @Indexed
     @Schema(description = "设备ID、设备号")
     private String deviceId;
 

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/school/CardInfo.java

@@ -12,6 +12,7 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.checkerframework.common.aliasing.qual.NonLeaked;
+import org.springframework.data.mongodb.core.index.Indexed;
 import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
@@ -35,6 +36,7 @@ public class CardInfo extends SuperMain {
     @Schema(description = "卡片类型")
     private CardType cardType;
 
+    @Indexed
     @Schema(description = "卡片号码,唯一标识, 卡号")
     private String code;
 

+ 4 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/hxz/HxzService.java

@@ -5,12 +5,12 @@ import com.github.microservice.models.hxz.*;
 import com.github.microservice.models.type.OrderFromType;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.types.payment.PaymentType;
-import com.zhongshu.card.server.core.dao.school.CardInfoDao;
+import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
 import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
-import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
-import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
+import com.zhongshu.card.server.core.dao.school.CardInfoDao;
 import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
+import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
 import com.zhongshu.card.server.core.httpRequest.ApiRequestService;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.payment.ExpenseFlowServiceImpl;
@@ -96,8 +96,7 @@ public class HxzService extends SuperService {
         }
         stopWatch.start("t2 创建订单");
         // 创建订单
-        ResultContent<ExpenseFlow> createResult = expenseFlowService.createExpenseFlowByHxz(param, expenseFlow);
-        expenseFlow = createResult.getContent();
+        expenseFlowService.createExpenseFlowByHxz(param, expenseFlow);
         stopWatch.stop();
 
         stopWatch.start("t3 支付");

+ 8 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java

@@ -139,6 +139,7 @@ public class OrganizationUserServiceImpl extends SuperService {
         if (ObjectUtils.isEmpty(organization)) {
             return ResultContent.buildFail(String.format("oid不存在:%s", oid));
         }
+        // 已存在的机构用户对应关系(不是项目)
         OrganizationUser temp = null;
         if (StringUtils.isNotEmpty(param.getId())) {
             temp = organizationUserDao.findTopById(param.getId());
@@ -152,6 +153,13 @@ public class OrganizationUserServiceImpl extends SuperService {
         }
 
         String projectOid = param.getProjectOid();
+        Organization projectInfo = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(projectInfo)) {
+            return ResultContent.buildFail("项目不存在");
+        }
+        if (projectInfo.getAuthType() == AuthType.Project) {
+            return ResultContent.buildFail("projectOid机构类型不属于项目,请检查参数");
+        }
         // 判断是否存在
         UserAccount userAccount = userCountDao.findTopByLoginName(loginName);
 

+ 21 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java

@@ -56,6 +56,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StopWatch;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -117,7 +118,7 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
     }
 
     /**
-     * 创建订单
+     * 创建订单 (订单信息 关联改变)
      *
      * @param iotParam
      * @return
@@ -135,7 +136,6 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         expenseFlow.setPaymentNo(paymentNo);
         // 支付金额
         BigDecimal amount = CommonUtil.turnMoney2BigDecimal(iotParam.getAmount());
-        amount = amount.stripTrailingZeros();
         expenseFlow.setPayAmount(amount);
 
         String deviceId = iotParam.getDeviceId();
@@ -150,6 +150,7 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         expenseFlow.setOrderType(OrderState.WAIT_PAYMENT);
         // 默认未结算状态
         expenseFlow.setSettlementState(SettlementState.Unsettled);
+
         // 验证参数、填充数据
         commonVerifyExpenseFlow(expenseFlow);
         return ResultContent.buildSuccess(expenseFlow);
@@ -248,6 +249,8 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
      */
     private void commonVerifyExpenseFlow(ExpenseFlow entity) {
         String deviceId = entity.getDeviceId();
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start("设备");
 
         // 验证设备
         DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(deviceId);
@@ -267,11 +270,16 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
             entity.setVerifyError(String.format("设备未绑定机构"));
             return;
         }
+        stopWatch.stop();
+
+        stopWatch.start("区域");
         // 设备所属的商户/机构
         entity.setShopOid(deviceInfo.getBeLongOid());
         // 设备区域
         entity.setArea(areaService.toSimpleModel(deviceInfo.getArea()));
+        stopWatch.stop();
 
+        stopWatch.start("项目信息");
         // 填充项目信息
         String projectOid = deviceInfo.getProjectOid();
         Organization projectInfo = organizationDao.findTopByOid(projectOid);
@@ -284,7 +292,9 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
             entity.setVerifyError("未绑定项目信息");
             return;
         }
+        stopWatch.stop();
 
+        stopWatch.start("卡片信息");
         if (entity.getOrderFromType() == OrderFromType.Swipe) {
             CardInfo cardInfo = cardInfoDao.findByCode(entity.getCardNo());
             // 验证卡片
@@ -313,6 +323,7 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
             }
             entity.setMode(iotParam.getMode());
         }
+        stopWatch.stop();
 
         // 验证用户信息
         if (StringUtils.isEmpty(entity.getUserId())) {
@@ -320,6 +331,7 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
             return;
         }
 
+        stopWatch.start("用户信息");
         UserAccount userAccount = userCountDao.findTopByUserId(entity.getUserId());
         if (ObjectUtils.isEmpty(userAccount)) {
             entity.setVerifyError("用户未注册");
@@ -332,7 +344,9 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
             entity.setVerifyError("用户已锁定");
             return;
         }
+        stopWatch.stop();
 
+        stopWatch.start("用户设备权限");
         // 判断设备和用户是否绑定
         DevicePermiss devicePermiss = devicePermissDao.findTopByUserIdAndDeviceIdAndProjectOid(entity.getUserId(), entity.getDeviceId(), entity.getProjectOid());
         if (ObjectUtils.isEmpty(devicePermiss)) {
@@ -343,7 +357,9 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
             entity.setVerifyError("用户设备权限未启用");
             return;
         }
+        stopWatch.stop();
 
+        stopWatch.start("end");
         // 消费设备信息
         if (deviceInfo.getDeviceType() != null) {
             entity.setPayType(deviceInfo.getDeviceType().getRemark());
@@ -354,11 +370,13 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         // 金额判断
         BigDecimal payAmount = entity.getPayAmount();
         if (entity.getMode() == 0 && CommonUtil.bigDecimalIsEmpty(payAmount)) {
-            entity.setVerifyError("消费金额不能0");
+            entity.setVerifyError("消费金额不能小于等于0");
             return;
         }
         entity.setVerifyParamIsSuccess(Boolean.TRUE);
         entity.setVerifyParamMsg("参数验证成功");
+        stopWatch.stop();
+        log.info("验证; {}", stopWatch.prettyPrint());
     }
 
     /**

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

@@ -200,17 +200,17 @@ public class PayCallService extends SuperService {
             entity.setPayRemark(msg);
             entity.setOrderType(OrderState.HAVE_PAID);
 
-            paymentProcess.setIsPaySuccess(Boolean.TRUE);
-            paymentProcess.setPayRemark(msg);
             // 日志
             logsAddParam.setMessageType(MessageType.Info);
             logsAddParam.setLevel(LogsLevel.Low);
             logsAddParam.setContent(msg);
 
+            // 支付记录
+            paymentProcess.setIsPaySuccess(Boolean.TRUE);
+            paymentProcess.setPayRemark(msg);
             paymentProcess.setPayEndTime(System.currentTimeMillis());
             paymentProcess.setPayMillis(paymentProcess.getPayEndTime() - paymentProcess.getPayStartTime());
             paymentProcess.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
-            paymentProcessDao.save(paymentProcess);
 
             // 记录订单的现在支付类型
             orderNoInfoService.saveInfo(entity.getPaymentNo(), OrderNoType.Pay, entity.getPaymentType());
@@ -244,6 +244,8 @@ public class PayCallService extends SuperService {
             // 支付记录流程
             paymentProcess.setIsPaySuccess(Boolean.FALSE);
             paymentProcess.setPayRemark(msg);
+            paymentProcess.setPayEndTime(System.currentTimeMillis());
+
             // 日志
             logsAddParam.setMessageType(MessageType.Warn);
             logsAddParam.setLevel(LogsLevel.Middle);
@@ -257,7 +259,6 @@ public class PayCallService extends SuperService {
         expenseFlowDao.save(entity);
 
         paymentProcess.setIsPaying(Boolean.FALSE);
-        paymentProcess.setPayEndTime(System.currentTimeMillis());
         paymentProcess.setPayMillis(paymentProcess.getPayEndTime() - paymentProcess.getPayStartTime());
         paymentProcess.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
         paymentProcessDao.save(paymentProcess);

+ 1 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/AreaServiceImpl.java

@@ -237,9 +237,8 @@ public class AreaServiceImpl extends SuperService implements AreaService {
     }
 
     public AreaSimpleModel toSimpleModel(Area entity) {
-        AreaSimpleModel model = null;
+        AreaSimpleModel model = new AreaSimpleModel();
         if (ObjectUtils.isNotEmpty(entity)) {
-            model = new AreaSimpleModel();
             BeanUtils.copyProperties(entity, model);
         }
         return model;

+ 2 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/util/CommonUtil.java

@@ -159,13 +159,14 @@ public class CommonUtil {
     /**
      * 把消费机的金额转为 数字 单位:分,
      *
-     * @param amount 2.45 (传过来的单位是:元)
+     * @param amount 2.45  转为 245 (传过来的单位是:元)
      * @return
      */
     public static BigDecimal turnMoney2BigDecimal(String amount) {
         BigDecimal money = BigDecimal.ZERO;
         try {
             money = new BigDecimal(amount).multiply(BigDecimal.valueOf(100));
+            money = money.stripTrailingZeros();
         } catch (Exception e) {
             e.printStackTrace();
         }