liujie
2023-09-20 d09828cdec78a160f4530a8ab245216ed8671c27
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -1,10 +1,13 @@
package com.dsh.account.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.account.dto.SelectDto;
import com.dsh.account.entity.*;
import com.dsh.account.enums.RechargeRecordEnum;
import com.dsh.account.feignclient.activity.IntroduceRewardsClient;
import com.dsh.account.feignclient.activity.MerChandiseClient;
import com.dsh.account.feignclient.activity.MerChandiseStoreClient;
import com.dsh.account.feignclient.activity.UserConponClient;
@@ -12,6 +15,7 @@
import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
import com.dsh.account.feignclient.competition.model.BillingDataRequestVo;
import com.dsh.account.feignclient.competition.model.PaymentCompetition;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import com.dsh.account.feignclient.course.CoursePackageClient;
import com.dsh.account.feignclient.course.CoursePackageConfigClient;
import com.dsh.account.feignclient.course.CoursePaymentClient;
@@ -28,11 +32,15 @@
import com.dsh.account.mapper.*;
import com.dsh.account.model.*;
import com.dsh.account.model.dto.Coupon;
import com.dsh.account.model.query.appUserQuery.QueryAppUser;
import com.dsh.account.model.vo.DetailsListVo;
import com.dsh.account.model.vo.QueryAppUserVO;
import com.dsh.account.model.vo.classDetails.CourseVenue;
import com.dsh.account.model.vo.classDetails.ExerciseVideo;
import com.dsh.account.model.vo.classDetails.RegisteredCourse;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
import com.dsh.account.model.vo.userBenefitDetail.*;
import com.dsh.account.service.TAppGiftService;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.util.*;
import com.dsh.account.util.akeylogin.Md5Util;
@@ -42,6 +50,7 @@
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
@@ -132,6 +141,32 @@
    @Resource
    private SiteClient stClient;
    @Autowired
    private TAppUserMapper appUserMapper;
    @Autowired
    private TAppGiftService appGiftService;
    @Autowired
    private IntroduceRewardsClient introduceRewardsClient;
    @Override
    public List<QueryAppUserVO> listAll(QueryAppUser query) {
       return appUserMapper.listAll(query);
    }
    @Override
    public HashMap<String,Object> weeksOfCourseDetailsList(Integer appUserId, Integer stuId, String time, Integer storeId,String lon,String lat) {
        // 门店id 查出所有课程
        HashMap<String, Object> map = paymentClient.weeksOfCourseDetailsList(new CourseDetailReq(appUserId, stuId, time, storeId,lon,lat));
        return map;
    }
    @Override
    public List<SelectDto> getSelects(List<Integer> studentIds) {
        return this.baseMapper.getSelects(studentIds);
    }
    @Override
    public ClassInfoVo queryUserOfStus(Integer id) {
@@ -216,6 +251,10 @@
                couList.setTimeStr(courseOfStoreVo.getClassStartTime() + "-" + courseOfStoreVo.getClassEndTime());
                couList.setDetail("¥" + courseOfStoreVo.getCoursePrice() + "/会员扣2学时");
                couList.setStatus(courseOfStoreVo.getStatus());
                couList.setAllNum(courseOfStoreVo.getAllNum());
                couList.setUseNum(courseOfStoreVo.getUseNum());
                couList.setLastNum(courseOfStoreVo.getLastNum());
                courses.add(couList);
            }
            courseVenue.setCourses(courses);
@@ -278,6 +317,32 @@
        tAppUser.setState(1);
        tAppUser.setInsertTime(new Date());
        this.baseMapper.insert(tAppUser);
        // 介绍有礼
        if(addAppUserVo.getReferralUserId()!=null){
            Map<String, String> geocode = gdMapGeocodingUtil.geocode(addAppUserVo.getLon(), addAppUserVo.getLat());
            Integer num=0;
            if(null != geocode){
                String province = geocode.get("province");
                String provinceCode = geocode.get("provinceCode");
                String city = geocode.get("city");
                String cityCode = geocode.get("cityCode");
                 num =  introduceRewardsClient.getGiftList(cityCode);
            }
            TAppGift one = appGiftService.getOne(new LambdaQueryWrapper<TAppGift>().eq(TAppGift::getUserId, addAppUserVo.getReferralUserId()));
            if(one!=null){
                one.setNum(one.getNum()+num);
                appGiftService.updateById(one);
            }else {
                TAppGift tAppGift = new TAppGift();
                tAppGift.setUserId(addAppUserVo.getReferralUserId());
                tAppGift.setNum(num);
                appGiftService.save(tAppGift);
            }
        }
        return ResultUtil.success();
    }
@@ -690,6 +755,8 @@
                        commodity.setBelongsType(vicinityGood.getUserPopulation());
                        commodity.setGoodsType(1);
                        commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
                        List<Integer> integers = mcsClient.queryPointMerStoreIds(vicinityGood.getId());
                        commodity.setShopIds(integers);
                        break;
                    case 2:
                        commodity.setGoodId(vicinityGood.getCoursePackageId());
@@ -706,6 +773,7 @@
                        commodity.setBelongsType(vicinityGood.getUserPopulation());
                        commodity.setGoodsType(2);
                        commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
                        commodity.setShopIds(mcsClient.queryPointMerStoreIds(vicinityGood.getId()));
                        break;
                    case 3:
                        commodity.setGoodId(vicinityGood.getId());
@@ -721,6 +789,7 @@
                        commodity.setBelongsType(vicinityGood.getUserPopulation());
                        commodity.setGoodsType(3);
                        commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId()));
                        commodity.setShopIds(mcsClient.queryPointMerStoreIds(vicinityGood.getId()));
                        break;
                    default:
                        break;
@@ -748,6 +817,7 @@
                goods.add(commodity);
            }
        }
        if (StringUtils.hasText(request.getSearch())){
            if (goods.size() > 0 ){
                goods = goods.stream()
@@ -755,6 +825,15 @@
                        .collect(Collectors.toList());
            }
        }
        // 2.0 门店筛选
        if (request.getShopId()!=null){
            if (goods.size() > 0 ){
                goods = goods.stream()
                        .filter(merchandise -> merchandise.getShopIds().contains(request.getShopId()))
                        .collect(Collectors.toList());
            }
        }
        if (null != request.getRank()){
            switch (request.getRank()){
                case 1:
@@ -854,6 +933,7 @@
    }
    @Override
    @Transactional
    public ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) {
        System.out.println("exchangeType:--->");
        System.out.println(exchangeType);
@@ -888,6 +968,7 @@
            pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId());
            pointsMerchandise.setUserId(userIdFormRedis);
            pointsMerchandise.setStatus(1);
            pointsMerchandise.setState(1);
            if (merchandise.getUseScope() == 3){
                if (exchangeType.getGoodsType() == 2){
                    CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId());
@@ -935,7 +1016,6 @@
                                packagePayment.setPayUserId(userIdFormRedis);
                                packagePayment.setStatus(1);
                                packagePayment.setState(1);
                                packagePayment.setInsertTime(new Date());
                                packagePayment.setCode(code);
                                paymentClient.savePaymentCoursePackage(packagePayment);
                            }
@@ -946,7 +1026,6 @@
                                coupon.setCouponId(exchangeType.getGoodId());
                                coupon.setUserId(userIdFormRedis);
                                coupon.setStatus(1);
                                coupon.setInsertTime(new Date());
                                ucponClient.insertToAppuserCoupon(coupon);
                            }
                            break;
@@ -960,59 +1039,6 @@
            case 2:
//                积分+现金
                boolean dealt = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral());
                if (dealt){
                    switch (exchangeType.getGoodsType()){
//                        1实物 2课包 3门票 4优惠券
                        case 2:
                            Integer stuNums = 0;
                            if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){
                                stuNums = exchangeType.getStuIds().size();
                            }else {
                                stuNums = 1;
                            }
                            for (int i = 0; i < stuNums; i++) {
                                List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId());
                                TCoursePackagePayment packagePayment = new TCoursePackagePayment();
                                packagePayment.setAppUserId(userIdFormRedis);
                                packagePayment.setStudentId(exchangeType.getStuIds().get(i));
                                packagePayment.setCoursePackageId(merchandise.getCoursePackageId());
                                for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) {
                                    if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) {
                                        packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours());
                                        packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours());
                                        packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours());
                                        packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
                                        break;
                                    }
                                }
                                packagePayment.setPlayPaiCoin(merchandise.getIntegral());
                                packagePayment.setAbsencesNumber(0);
                                packagePayment.setPayUserType(1);
                                packagePayment.setPayStatus(1);
                                packagePayment.setPayUserId(userIdFormRedis);
                                packagePayment.setStatus(1);
                                packagePayment.setState(1);
                                packagePayment.setInsertTime(new Date());
                                packagePayment.setCode(code);
                                paymentClient.savePaymentCoursePackage(packagePayment);
                            }
                            break;
                        case 4:
                            for (int i = 0; i < goodsNums; i++) {
                                UserCoupon coupon = new UserCoupon();
                                coupon.setCouponId(exchangeType.getGoodId());
                                coupon.setUserId(userIdFormRedis);
                                coupon.setStatus(1);
                                coupon.setInsertTime(new Date());
                                ucponClient.insertToAppuserCoupon(coupon);
                            }
                            break;
                        default:
                            break;
                    }
                }else {
                    return ResultUtil.error("用户积分不足!");
                }
                switch (exchangeType.getPayType()) {
                    case 1:
                        try {
@@ -1035,55 +1061,6 @@
                }
                break;
            case 3:
//                现金
                switch (exchangeType.getGoodsType()){
                    case 2:
                        Integer stuNums = 0;
                        if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){
                            stuNums = exchangeType.getStuIds().size();
                        }else {
                            stuNums = 1;
                        }
                        for (int i = 0; i < stuNums; i++) {
                            List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId());
                            TCoursePackagePayment packagePayment = new TCoursePackagePayment();
                            packagePayment.setAppUserId(userIdFormRedis);
                            packagePayment.setStudentId(exchangeType.getStuIds().get(i));
                            packagePayment.setCoursePackageId(merchandise.getCoursePackageId());
                            for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) {
                                if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) {
                                    packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours());
                                    packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours());
                                    packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours());
                                    packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
                                    break;
                                }
                            }
                            packagePayment.setCashPayment(merchandise.getCash());
                            packagePayment.setAbsencesNumber(0);
                            packagePayment.setPayUserType(1);
                            packagePayment.setPayStatus(1);
                            packagePayment.setPayUserId(userIdFormRedis);
                            packagePayment.setStatus(1);
                            packagePayment.setState(1);
                            packagePayment.setInsertTime(new Date());
                            packagePayment.setCode(code);
                            paymentClient.savePaymentCoursePackage(packagePayment);
                        }
                        break;
                    case 4:
                        for (int i = 0; i < goodsNums; i++) {
                            UserCoupon coupon = new UserCoupon();
                            coupon.setCouponId(exchangeType.getGoodId());
                            coupon.setUserId(userIdFormRedis);
                            coupon.setStatus(1);
                            coupon.setInsertTime(new Date());
                            ucponClient.insertToAppuserCoupon(coupon);
                        }
                        break;
                    default:
                        break;
                }
                switch (exchangeType.getPayType()) {
                    case 1:
                        try {
@@ -1163,11 +1140,10 @@
                                Map<String, String> data1 = resultUtil.getData();
                                String s = data1.get("tradeStatus");
                                String tradeNo = data1.get("tradeNo");
//                                if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
//                                    coursePackagePayment.setState(3);
//                                    couPayClient.delPaymentCoursePackage(coursePackagePayment.getId());
//                                    break;
//                                }
                                if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
                                    mcClient.deletePaymentRecord(code);
                                    break;
                                }
                                if("TRADE_SUCCESS".equals(s)){
                                    for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) {
                                        userPointsMerchandise.setPayStatus(2);
@@ -1183,6 +1159,7 @@
                            }
                        }
                    }catch (Exception e){
                        mcClient.deletePaymentRecord(code);
                        e.printStackTrace();
                    }
                }
@@ -1223,11 +1200,10 @@
                                Map<String, String> data1 = resultUtil.getData();
                                String s = data1.get("trade_state");
                                String transaction_id = data1.get("transaction_id");
//                                if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
//                                    coursePackagePayment.setState(3);
//                                    couPayClient.delPaymentCoursePackage(coursePackagePayment.getId());
//                                    break;
//                                }
                                if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
                                    mcClient.deletePaymentRecord(code);
                                    break;
                                }
                                if("SUCCESS".equals(s)){
                                    for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) {
                                        userPointsMerchandise.setPayStatus(2);
@@ -1279,7 +1255,6 @@
                        coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId());
                        coupon.setUserId(userPointsMerchandises.get(0).getUserId());
                        coupon.setStatus(1);
                        coupon.setInsertTime(new Date());
                        ucponClient.insertToAppuserCoupon(coupon);
                        break;
                    default:
@@ -1310,7 +1285,6 @@
                    coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId());
                    coupon.setUserId(userPointsMerchandises.get(0).getUserId());
                    coupon.setStatus(1);
                    coupon.setInsertTime(new Date());
                    ucponClient.insertToAppuserCoupon(coupon);
                    break;
                default:
@@ -1372,4 +1346,6 @@
    }
}