Browse Source

Merge remote-tracking branch 'origin/master'

wujiefeng 1 year ago
parent
commit
fa37488f13

+ 0 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolBind2OrgUserParam.java

@@ -20,7 +20,6 @@ public class CardInfoPoolBind2OrgUserParam {
     private String poolId;
 
     @Schema(description = "机构用户id")
-    @NotEmpty(message = "id不能为空")
     private String id;
 
     private String remark;

+ 2 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/CardInfoService.java

@@ -26,6 +26,8 @@ public interface CardInfoService {
     // 绑定
     ResultContent bindCardFromPoolByOrgId(String poolId, String id, String remark);
 
+    ResultContent bindByCode(String code);
+
     // 解绑用户卡片
     ResultContent unBindCard(String id);
 

+ 8 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/CardController.java

@@ -3,6 +3,7 @@ package com.zhongshu.card.server.core.controller.projectAbout;
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.helper.AuthHelper;
 import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.CodeParam;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.OidModel;
 import com.zhongshu.card.client.model.base.ProjectOidParam;
@@ -205,6 +206,13 @@ public class CardController {
         return cardInfoService.bindCardFromPoolByOrgId(param.getPoolId(), param.getId(), "");
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "根据卡号绑定(小程序使用)", description = "根据卡号绑定")
+    @RequestMapping(value = {"bindByCode"}, method = {RequestMethod.POST})
+    public ResultContent bindByCode(@RequestBody @Valid CodeParam param) {
+        return cardInfoService.bindByCode(param.getCode());
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "解除绑定", description = "解除绑定")
     @RequestMapping(value = {"unBindCard"}, method = {RequestMethod.POST})

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/ExpenseFlow.java

@@ -216,6 +216,9 @@ public class ExpenseFlow extends SuperMain {
     @Schema(description = "退款处理备注")
     private String refuseRemark;
 
+    @Schema(description = "退款订单号")
+    private String refundNo;
+
     @Schema(description = "退款账单流量")
     private List<String> refundTransactionIds = new ArrayList<String>();
 

+ 3 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/DevicePermissService.java

@@ -203,7 +203,7 @@ public class DevicePermissService extends SuperService {
                 }
                 // 通知权限下发
                 String projectOid = list.get(0).getProjectOid();
-                List<String> deviceIds = list.stream().map(it->it.getDeviceId()).collect(Collectors.toUnmodifiableList());
+                List<String> deviceIds = list.stream().map(it -> it.getDeviceId()).collect(Collectors.toUnmodifiableList());
                 devicePermissEventService.sendDeviceChangeEvent(deviceIds, projectOid);
             }
         }
@@ -372,6 +372,8 @@ public class DevicePermissService extends SuperService {
                 List<CardInfo> cardInfoList = cardMap.get(userId);
                 if (ObjectUtils.isNotEmpty(cardInfoList)) {
                     permiss.setCNos(cardInfoList.stream().map(it -> it.getCode()).collect(Collectors.toList()));
+                } else {
+                    permiss.setCNos(List.of("unKnow"));
                 }
                 map.put(userId, permiss);
             }

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

@@ -199,6 +199,7 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         if (entity.getMode() != null) {
             if (entity.getMode() == 0) {
                 entity.setOrderModeType(OrderModeType.Consume);
+                // 支付
                 payCallService.pay(entity);
                 expenseFlowDao.save(entity);
             } else if (entity.getMode() == 2) {
@@ -760,8 +761,8 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
         if (ObjectUtils.isEmpty(expenseFlow)) {
             return ResultContent.buildSuccess(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
         }
-        if (expenseFlow.getOrderType() == OrderState.HAVE_PAID) {
-            return ResultContent.buildFail(String.format("订单状态不是已支付状态,不能退款"));
+        if (expenseFlow.getOrderType() != OrderState.HAVE_PAID) {
+            return ResultContent.buildFail(String.format("未支付成功,不能退款"));
         }
         ResultContent resultContent = payCallService.refund(expenseFlow, param);
         if (resultContent.isFailed()) {

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

@@ -15,6 +15,7 @@ import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.pay.BalancePayService;
 import com.zhongshu.card.server.core.service.user.OperationLogsService;
+import com.zhongshu.card.server.core.util.NextNoUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -160,6 +161,7 @@ public class PayCallService extends SuperService {
                 entity.setRefundState(RefundState.Refunded);
                 entity.setRefuseRemark("退款成功");
                 expenseFlowDao.save(entity);
+                return ResultContent.buildSuccess();
             } else {
                 return ResultContent.buildFail(resultContent.getMsg());
             }
@@ -174,9 +176,11 @@ public class PayCallService extends SuperService {
      * @return
      */
     public ResultContent<List<TransactionLogModel>> walletRefund(ExpenseFlow entity, ExpenseRefundParam param) {
+        String refundNo = NextNoUtil.getNextPaymentNo(null);
+        entity.setRefundNo(refundNo);
         com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent = balancePayService.refund(
                 entity.getProjectOid(), entity.getShopOid(), entity.getUserId(),
-                entity.getPaymentNo(), entity.getPayAmount(), param.getRemark());
+                refundNo, entity.getPayAmount(), param.getRemark());
         if (resultContent.getState() == ResultState.Success) {
             return ResultContent.buildSuccess(resultContent.getContent());
         } else {

+ 80 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoServiceImpl.java

@@ -278,6 +278,77 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         return ResultContent.buildSuccess();
     }
 
+    @Transactional
+    @Override
+    public ResultContent bindByCode(String code) {
+        if (StringUtils.isEmpty(code)) {
+            return ResultContent.buildFail("code不能为空");
+        }
+        code = code.trim().toUpperCase();
+        log.info("code: {}", code);
+        // 卡池数据
+        CardInfoPool cardInfoPool = cardInfoPoolDao.findTopByCode(code);
+        if (ObjectUtils.isEmpty(cardInfoPool)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, code));
+        }
+        if (cardInfoPool.getIsUsed() != null && cardInfoPool.getIsUsed()) {
+            return ResultContent.buildFail(String.format("卡片已使用:%s", cardInfoPool.getCode()));
+        }
+        if (cardInfoPool.getCardCancelState() != null && cardInfoPool.getCardCancelState() != CardCancelState.Common) {
+            return ResultContent.buildFail(String.format("卡片:%s", cardInfoPool.getCardCancelState().getRemark()));
+        }
+        String userId = getCurrentUserId();
+        String projectOid = getCurrentProjectOid();
+
+        List<OrganizationUser> organizationUsers = organizationUserService.getUserOrgList(userId, projectOid);
+        if (ObjectUtils.isEmpty(organizationUsers)) {
+            return ResultContent.buildFail("用户未加入机构");
+        }
+        OrganizationUser organizationUser = organizationUsers.get(0);
+
+        // 用户信息
+        UserAccount account = userCountDao.findTopByUserId(userId);
+        if (ObjectUtils.isEmpty(account)) {
+            return ResultContent.buildFail("机构用户信息为空");
+        }
+        CardInfo cardInfo = cardInfoDao.findByCode(code);
+        if (ObjectUtils.isNotEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format("卡号已存在:%s", code));
+        }
+        cardInfo = new CardInfo();
+        initEntity(cardInfo);
+
+        cardInfo.setName(cardInfoPool.getName());
+        cardInfo.setCode(cardInfoPool.getCode());
+        cardInfo.setCardType(cardInfoPool.getCardType());
+
+        cardInfo.setProjectOid(cardInfoPool.getProjectOid());
+        cardInfo.setSchoolOid(cardInfoPool.getSchoolOid());
+        cardInfo.setAboutAuthType(cardInfoPool.getAboutAuthType());
+        cardInfo.setAboutOid(cardInfoPool.getAboutOid());
+        cardInfo.setOid(cardInfoPool.getOid());
+        cardInfo.setOrganization(organizationUser.getOrganization());
+        cardInfo.setOrganizationUser(organizationUser);
+
+        cardInfo.setCardState(CardState.Enable);
+        cardInfo.setUserAccount(account);
+        cardInfo.setUserId(userId);
+        cardInfo.setUserName(account.getName());
+        cardInfo.setPhone(account.getPhone());
+        cardInfo.setRemark("用户搜索绑定");
+        cardInfoDao.save(cardInfo);
+
+        // 标记卡池这张卡已使用
+        cardInfoPool.setIsUsed(Boolean.TRUE);
+        cardInfoPool.setUseUserId(userId);
+        cardInfoPool.setUseTime(System.currentTimeMillis());
+        cardInfoPoolDao.save(cardInfoPool);
+
+        // 用户卡片增多
+        devicePermissEventService.sendUserInfoChangeEvent(cardInfo.getUserId(), cardInfo.getProjectOid());
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 解绑卡片
      *
@@ -732,6 +803,15 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         return ResultContent.buildSuccess();
     }
 
+    public ResultContent getUserProjectAllCard(String userId, String projectOid) {
+        List<CardInfo> list = cardInfoDao.findByUserIdAndProjectOid(userId, projectOid);
+        List<CardInfoModel> models = new ArrayList<>(list.size());
+        if (ObjectUtils.isNotEmpty(list)) {
+            models = list.stream().map(this::toModel).collect(Collectors.toUnmodifiableList());
+        }
+        return ResultContent.buildSuccess(models);
+    }
+
     public List<CardInfo> getProjectCards(String projectOid, List<String> userIds) {
         if (StringUtils.isNotEmpty(projectOid) && ObjectUtils.isNotEmpty(userIds)) {
             return cardInfoDao.findByProjectOidAndUserIdInAndCardStateOrderByUpdateTimeDesc(projectOid, userIds, CardState.Enable);

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

@@ -317,10 +317,7 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
      */
     @Override
     public ResultContent<List<CardInfoModel>> getCurrentUserAllCard() {
-        String userId = getCurrentUserId();
-        Assert.hasText(userId, "userId不能为空");
-        List<CardInfoModel> cardInfos = cardInfoService.getUserOrgAllCard(userId, null);
-        return ResultContent.buildSuccess(cardInfos);
+        return cardInfoService.getUserProjectAllCard(getCurrentUserId(), getCurrentProjectOid());
     }
 
     //-------------------------------卡片信息维护 end---------------------

+ 1 - 1
FullCardServer/src/main/resources/application-dev.yml

@@ -11,7 +11,7 @@ spring:
     pub-sub-domain: true
   artemis:
     mode: native  # cluster native EMBEDDED
-    broker-url: tcp://162.14.78.247:61616?connectionTimeout=6000
+    broker-url: tcp://172.24.50.53:61616?connectionTimeout=6000
     user: admin
     password: admin123
   data: