From 1d9f7b0cf4251f3058badb07dd7a2bc06b6bc09a Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 11 四月 2025 10:05:32 +0800
Subject: [PATCH] bug修改

---
 cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java |  140 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 105 insertions(+), 35 deletions(-)

diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java
index 663def8..e48fc69 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java
@@ -17,10 +17,7 @@
 import com.dsh.activity.feignclient.other.RegionClient;
 import com.dsh.activity.feignclient.other.SiteClient;
 import com.dsh.activity.feignclient.other.StoreClient;
-import com.dsh.activity.feignclient.other.model.CityDataAndProvinceDataVo;
-import com.dsh.activity.feignclient.other.model.Store;
-import com.dsh.activity.feignclient.other.model.StoreInfoDto;
-import com.dsh.activity.feignclient.other.model.TOperatorCity;
+import com.dsh.activity.feignclient.other.model.*;
 import com.dsh.activity.model.CouponListVo;
 import com.dsh.activity.model.CouponRecordQuery;
 import com.dsh.activity.model.request.CommodityRequest;
@@ -83,18 +80,7 @@
     private TokenUtil tokenUtil;
     private String smid = "2088330203191220";//平台支付宝商户号
 
-    public static void main(String[] args) {
-        Date date = new Date();
 
-        date.setMonth(11);
-        date.setDate(31);
-        date.setHours(23);
-        date.setMinutes(59);
-        date.setSeconds(59);
-        System.err.println(date);
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        System.err.println(simpleDateFormat.format(date));
-    }
     /**
      * 查看惠民卡详情
      */
@@ -114,6 +100,23 @@
                 return ResultUtil.tokenErr();
             }
             THuiminCard huiminCard = huiminCardService.getById(id);
+            if (huiminCard.getEndTime()!=null && huiminCard.getEndTime().before(new Date())){
+                return ResultUtil.error("该惠民卡已过期");
+            }
+            if (huiminCard.getGrantCount()!=null){
+                if (huiminCard.getGrantCount()<=payHuiminService.lambdaQuery().eq(TPayHuimin::getCardId, huiminCard.getId())
+                        .eq(TPayHuimin::getStatus,2).count()){
+                    return ResultUtil.error("该惠民卡已售完");
+                }
+            }
+            if (huiminCard.getLimitCount()!=null){
+                if (huiminCard.getLimitCount()<=payHuiminService.lambdaQuery().eq(TPayHuimin::getCardId, huiminCard.getId())
+                        .eq(TPayHuimin::getStatus,2)
+                        .eq(TPayHuimin::getAppUserId, uid)
+                        .count()){
+                    return ResultUtil.error("该惠民卡购买次数已达上限");
+                }
+            }
             TPayHuimin tPayHuimin = new TPayHuimin();
             tPayHuimin.setSalesMoney(huiminCard.getSalesMoney());
             tPayHuimin.setAppUserId(uid);
@@ -145,13 +148,17 @@
             tPayHuimin.setCardId(huiminCard.getId());
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
             tPayHuimin.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5));
+            System.err.println("支付数据"+tPayHuimin);
+            payHuiminService.save(tPayHuimin);
+            BigDecimal bigDecimal = new BigDecimal(studentIds.split(",").length);
             switch (payType){
                 case 1:
-                    return payMoneyUtil.weixinpay("购买惠民卡"+"-"+0, "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().toString(),
-                            "/huimin/callBack/weixinPayHuiminCallback", "APP", "");
+                    return payMoneyUtil.weixinpay("购买惠民卡"+"-"+0, "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().multiply(bigDecimal).toString(),
+                            "/base/huimin/callBack/weixinPayHuiminCallback", "APP", "");
                 case 2:
-                    return payMoneyUtil.alipay(smid,"购买惠民卡", "购买惠民卡", "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().toString(),
-                            "/huimin/callBack/aliPayHuiminCallback");
+                    String string = tPayHuimin.getSalesMoney().multiply(bigDecimal).setScale(2).toString();
+                    return payMoneyUtil.alipay(smid,"购买惠民卡", "购买惠民卡", "", tPayHuimin.getCode(), string,
+                            "/base/huimin/callBack/aliPayHuiminCallback");
             }
 
         } catch (Exception e) {
@@ -248,7 +255,8 @@
             pageNo = (pageNo - 1) * pageSize;
             HuiminAgreementVO huiminAgreementVO = new HuiminAgreementVO();
             List<THuiminCard> cardList = huiminCardService.getHuiminAgreementAndList(pageNo,pageSize,storeId);
-            if (cardList.isEmpty()){
+            List<THuiminCard> cardListNolimit = huiminCardService.getHuiminAgreementAndListNolimit(storeId);
+            if (cardListNolimit.isEmpty()){
                 // 没有配置惠民卡 展示富文本内容
                 huiminAgreementVO.setShowType(1);
             }else{
@@ -272,15 +280,23 @@
             List<TPayHuimin> payHuimins = payHuiminService.list(new LambdaQueryWrapper<TPayHuimin>()
                     .eq(TPayHuimin::getAppUserId, uid)
                     .ge(TPayHuimin::getEndTime,new Date())
-                    .eq(TPayHuimin::getStatus, 1));
+                    .in(TPayHuimin::getStatus, Arrays.asList(2,3)));
             List<HuiminCardVO> huiminCardVOS = new ArrayList<>();
             for (THuiminCard huiminCardVO : cardList) {
                 HuiminCardVO huiminCardVO1 = new HuiminCardVO();
                 huiminCardVO1.setId(huiminCardVO.getId());
                 List<TPayHuimin> collect = payHuimins.stream().filter(e -> e.getCardId().equals(huiminCardVO.getId())).collect(Collectors.toList());
                 if (!collect.isEmpty()){
-                    huiminCardVO1.setCover(huiminCardVO.getBuyCover());
-                    huiminCardVO1.setIsBuy(1);
+                    for (TPayHuimin tPayHuimin : collect) {
+                        if (tPayHuimin.getStatus().equals(2)){
+                            huiminCardVO1.setCover(huiminCardVO.getBuyCover());
+                            huiminCardVO1.setIsBuy(1);
+                            break;
+                        }else{
+                            huiminCardVO1.setCover(huiminCardVO.getUnBuyCover());
+                            huiminCardVO1.setIsBuy(0);
+                        }
+                    }
                 }else{
                     huiminCardVO1.setCover(huiminCardVO.getUnBuyCover());
                     huiminCardVO1.setIsBuy(0);
@@ -315,12 +331,11 @@
             List<MyHuiminCardVO> cardList = huiminCardService.getMyHuiminCardList(pageNo,pageSize,uid);
             List<THuiminCard> list = huiminCardService.list();
             for (MyHuiminCardVO myHuiminCardVO : cardList) {
-                if (myHuiminCardVO.getEndTime().before(new Date())){
-                    // 已过期
-                    myHuiminCardVO.setIsExpire(1);
-                }else{
-                    myHuiminCardVO.setIsExpire(0);
-                }
+                TPayHuimin byId = payHuiminService.getById(myHuiminCardVO.getId());
+                myHuiminCardVO.setEndTime(byId.getEndTime());
+
+                myHuiminCardVO.setSalesMoney(byId.getSalesMoney());
+
                 int count = huiminRecordService.count(new LambdaQueryWrapper<THuiminRecord>()
                         .eq(THuiminRecord::getHuiminCardId, myHuiminCardVO.getCardId()));
                 // 购卡7日内没有使用记录可退款。超过7日不管有没有使用记录都不能退款
@@ -335,6 +350,15 @@
                 THuiminCard huiminCard = list.stream().filter(e -> e.getId().equals(myHuiminCardVO.getCardId())).findFirst().orElse(null);
                 if (null!=huiminCard){
                     myHuiminCardVO.setCover(huiminCard.getBuyCover());
+                }
+                if (myHuiminCardVO.getEndTime().before(new Date())){
+                    // 已过期
+                    myHuiminCardVO.setIsExpire(1);
+                    if (null!=huiminCard){
+                        myHuiminCardVO.setCover(huiminCard.getUnBuyCover());
+                    }
+                }else{
+                    myHuiminCardVO.setIsExpire(0);
                 }
                 // 查询绑定人员列表
                 List<TStudent> studentByIds = studentClient.getStudentByIds(myHuiminCardVO.getStudentId());
@@ -368,11 +392,24 @@
             }
             if (tPayHuimin.getStatus()==3 && tPayHuimin.getRefundStatus()!=1){
                 return ResultUtil.error("不可重复退款");
-
+            }
+            if (tPayHuimin.getEndTime().before(new Date())){
+                // 已过期
+                return ResultUtil.error("惠民卡已过期,不可退款");
+            }
+            int count = huiminRecordService.count(new LambdaQueryWrapper<THuiminRecord>()
+                    .eq(THuiminRecord::getHuiminCardId, tPayHuimin.getCardId()));
+            // 购卡7日内没有使用记录可退款。超过7日不管有没有使用记录都不能退款
+            if (new Date().after(DateUtil.addDay(tPayHuimin.getPaymentTime(),7))){
+                // 超过七天不可退款
+                return ResultUtil.error("惠民卡购买超过七天,不可退款");
+            }else if (count>=7){
+                // 使用记录大于等于7次不可退款
+                return ResultUtil.error("惠民卡使用记录大于等于7次,不可退款");
             }
             if (tPayHuimin.getPaymentType()==1){
                 Map<String, String> map = payMoneyUtil.wxRefund(tPayHuimin.getOrderNumber(), tPayHuimin.getCode(),
-                        tPayHuimin.getSalesMoney().toString(), tPayHuimin.getSalesMoney().toString(), "/base/worldCup/wxRefundWorldCupCallback");
+                        tPayHuimin.getSalesMoney().toString(), tPayHuimin.getSalesMoney().toString(), "/base/huimin/callBack/wxRefundHuiminCallback");
                 if(!"SUCCESS".equals(map.get("return_code"))){
                     System.err.println("-------------微信退款失败---------");
                     System.err.println(map.get("return_msg"));
@@ -420,11 +457,21 @@
             }
             THuiminCard byId = huiminCardService.getById(tPayHuimin.getCardId());
             MyHuiminCardDetailVO myHuiminCardDetailVO = new MyHuiminCardDetailVO();
-//            myHuiminCardDetailVO.setQrCode();
-            myHuiminCardDetailVO.setCardId(tPayHuimin.getCardId());
-            if (byId!=null){
-                myHuiminCardDetailVO.setIntroduce(byId.getIntroduce());
+            String siteIds = "";
+            if (byId.getUseScope()==2){
+                siteIds = byId.getUseIds();
+            }else{
+                siteIds = siteClient.querySiteByStoreIds(byId.getStoreIds())
+                        .stream()
+                        .map(Site::getId)
+                        .map(String::valueOf)
+                        .collect(Collectors.joining(","));
             }
+            String temp ="{\"siteIds\":\"" +siteIds+"\","+"\"useTimes:\"\""+byId.getUseWeeks()+"\","+"\"unUseTimes:\""+byId.getUnUseTimes()+"\"}";
+            myHuiminCardDetailVO.setQrCode(temp);
+            myHuiminCardDetailVO.setCardId(tPayHuimin.getCardId());
+            myHuiminCardDetailVO.setHuiminCard(byId);
+            myHuiminCardDetailVO.setIntroduce(byId.getIntroduce());
             myHuiminCardDetailVO.setEndTime(tPayHuimin.getEndTime());
             // 查询绑定人员列表
             List<TStudent> studentByIds = studentClient.getStudentByIds(tPayHuimin.getStudentId());
@@ -435,5 +482,28 @@
             return ResultUtil.success(new MyHuiminCardDetailVO());
         }
     }
+    /**
+     * 获取添加人员、选择人员说明文案
+     */
+    @ResponseBody
+    @PostMapping("/getContentForStudent")
+    @ApiOperation(value = "获取添加人员、选择人员说明文案")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+    })
+    public ResultUtil<THuiminAgreement> getContentForStudent() {
+        try {
+            Integer uid = tokenUtil.getUserIdFormRedis();
+            if (null == uid) {
+                return ResultUtil.tokenErr();
+            }
+            THuiminAgreement one = huiminAgreementService.lambdaQuery()
+                    .isNull(THuiminAgreement::getOperatorId).last("limit 1").one();
+            return ResultUtil.success(one);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultUtil.success(new THuiminAgreement());
+        }
+    }
 
 }

--
Gitblit v1.7.1