无关风月
2025-04-11 1d9f7b0cf4251f3058badb07dd7a2bc06b6bc09a
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());
        }
    }
}