From d09828cdec78a160f4530a8ab245216ed8671c27 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期三, 20 九月 2023 18:43:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java |  267 ++++++++++++++++++++++++-----------------------------
 1 files changed, 120 insertions(+), 147 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 471d8df..656063c 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/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);
@@ -868,35 +948,27 @@
         if (ToolUtil.isEmpty(tAppUser)){
             return ResultUtil.error("用户不存在");
         }
-//        查询是否超出限领数量
-        switch (exchangeType.getGoodsType()){
-            case 1:
-
-                break;
-            case 2:
-
-                break;
-            case 3:
-
-                break;
-            case 4:
-
-                break;
-            default:
-                break;
-        }
         int goodsNums = 0;
         if (ToolUtil.isEmpty(exchangeType.getNums())){
             goodsNums = 1;
         }else {
             goodsNums = exchangeType.getNums();
         }
+        AppUserGoodResp goodResp = new AppUserGoodResp();
+        goodResp.setAppUserId(userIdFormRedis);
+        goodResp.setGoodId(merchandise.getId());
+        int count = mcClient.queryUserHasGoodsNums(goodResp);
+        if (ToolUtil.isNotEmpty(count) && count >= merchandise.getPickUpQuantity()){
+            return ResultUtil.error("超过限领数量");
+        }
+
         for (int i = 0; i < goodsNums; i++) {
 //            新增积分商品兑换记录
             UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise();
             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());
@@ -944,7 +1016,6 @@
                                 packagePayment.setPayUserId(userIdFormRedis);
                                 packagePayment.setStatus(1);
                                 packagePayment.setState(1);
-                                packagePayment.setInsertTime(new Date());
                                 packagePayment.setCode(code);
                                 paymentClient.savePaymentCoursePackage(packagePayment);
                             }
@@ -955,7 +1026,6 @@
                                 coupon.setCouponId(exchangeType.getGoodId());
                                 coupon.setUserId(userIdFormRedis);
                                 coupon.setStatus(1);
-                                coupon.setInsertTime(new Date());
                                 ucponClient.insertToAppuserCoupon(coupon);
                             }
                             break;
@@ -969,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 {
@@ -1044,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 {
@@ -1133,6 +1101,7 @@
             appUser.setIntegral(null == appUser.getIntegral() ? points : appUser.getIntegral() - points);
             userIntegralChanges.setNewIntegral(appUser.getIntegral());
             userIntegralChanges.setInsertTime(new Date());
+            userIntegralChanges.setCategory(2);
             uicMapper.insert(userIntegralChanges);
 
             this.baseMapper.updateById(appUser);
@@ -1171,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);
@@ -1191,6 +1159,7 @@
                             }
                         }
                     }catch (Exception e){
+                        mcClient.deletePaymentRecord(code);
                         e.printStackTrace();
                     }
                 }
@@ -1231,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);
@@ -1287,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:
@@ -1318,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:
@@ -1334,24 +1300,29 @@
         List<StoreResponse> responses = new ArrayList<>();
         if (goodsType == 4){
             List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId);
-            for (Integer couponStoreId : couponStoreIds) {
-                StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId);
-                if(ToolUtil.isNotEmpty(courseOfStore)){
-                    StoreResponse response = new StoreResponse();
-                    response.setStoreId(couponStoreId);
-                    response.setStoreName(courseOfStore.getStoreName());
-                    responses.add(response);
+            if (couponStoreIds.size() > 0 ){
+                for (Integer couponStoreId : couponStoreIds) {
+                    StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId);
+                    if(ToolUtil.isNotEmpty(courseOfStore)){
+                        StoreResponse response = new StoreResponse();
+                        response.setStoreId(couponStoreId);
+                        response.setStoreName(courseOfStore.getStoreName());
+                        responses.add(response);
+                    }
                 }
             }
+
         }else {
             List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId);
-            for (Integer integer : integers) {
-                StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer);
-                if(ToolUtil.isNotEmpty(courseOfStore)){
-                    StoreResponse response = new StoreResponse();
-                    response.setStoreId(integer);
-                    response.setStoreName(courseOfStore.getStoreName());
-                    responses.add(response);
+            if (integers.size() > 0 ){
+                for (Integer integer : integers) {
+                    StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer);
+                    if(ToolUtil.isNotEmpty(courseOfStore)){
+                        StoreResponse response = new StoreResponse();
+                        response.setStoreId(integer);
+                        response.setStoreName(courseOfStore.getStoreName());
+                        responses.add(response);
+                    }
                 }
             }
         }
@@ -1375,4 +1346,6 @@
     }
 
 
+
+
 }

--
Gitblit v1.7.1