From 9486766c806fe1d9e082b2fd02ea1cc558f1b443 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 08 五月 2025 09:21:57 +0800 Subject: [PATCH] bug修改 --- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 1824 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 1,188 insertions(+), 636 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 8e5de5e..02c7717 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,7 +1,6 @@ package com.dsh.account.service.impl; -import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; @@ -19,42 +18,34 @@ import com.dsh.account.dto.*; 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; +import com.dsh.account.feignclient.activity.*; import com.dsh.account.feignclient.activity.model.*; +import com.dsh.account.feignclient.communityWorldCup.WorldCupPaymentClinet; +import com.dsh.account.feignclient.communityWorldCup.model.GetWorldCupPayment; 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; import com.dsh.account.feignclient.course.VideoOfCourseListClient; import com.dsh.account.feignclient.course.model.*; -import com.dsh.account.feignclient.other.ImgConfigClient; -import com.dsh.account.feignclient.other.RechargeConfigClient; -import com.dsh.account.feignclient.other.SiteClient; -import com.dsh.account.feignclient.other.StoreClient; -import com.dsh.account.feignclient.other.model.SiteBooking; -import com.dsh.account.feignclient.other.model.Store; -import com.dsh.account.feignclient.other.model.StoreDetailOfCourse; -import com.dsh.account.feignclient.other.model.TImgConfig; +import com.dsh.account.feignclient.other.*; +import com.dsh.account.feignclient.other.model.*; import com.dsh.account.mapper.*; import com.dsh.account.model.*; import com.dsh.account.model.AppUserByNameAndPhoneDTO; 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.IRefereeService; import com.dsh.account.service.TAppGiftService; import com.dsh.account.service.TAppUserService; +import com.dsh.account.service.UserIntegralChangesService; import com.dsh.account.util.*; import com.dsh.account.util.akeylogin.Md5Util; import com.dsh.account.vo.GroupCityInfoVO; @@ -124,7 +115,6 @@ @Resource private ImgConfigClient icfgClient; - @Resource private VideoOfCourseListClient voclClient; @@ -139,6 +129,7 @@ @Resource private UserConponClient ucponClient; + @Resource private CoursePackageClient cpageClient; @@ -156,18 +147,17 @@ private CoursePackageConfigClient cpconClient; @Resource - private PayMoneyUtil payMoneyUtil; + private SiteClient stClient; @Resource - private SiteClient stClient; - @Autowired private TAppUserMapper appUserMapper; @Autowired private TAppGiftService appGiftService; - @Autowired + @Resource private IntroduceRewardsClient introduceRewardsClient; + private String aliAppid = "2021004105665036";//支付宝appid @@ -176,21 +166,54 @@ private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAouYvZ1v4RiydwNOnGcU0Hb4hQu0x6XUooaE2Bi6/atNOobtFdunnATGP6OMOW7yF9DpP8qH5mbFXAiaQD721y/7qlayI50UcV4mngRU4ZcaAVE3bp721Eg2H85RISa+Tb1CiOh+pc9p4l5UBseKsvB2ruHHForfZDPI8FL7AVUKBYCQPsa4zL6KAO2C6KULaTg/lCa+bYQKU0n9ca569VtdsqJUyxB9eSZjVd+9nKl62FLqp2NELGj7cXqiVBgDnBnVS5ZUO3mrBM5z/AxQbw3RwE3JqdkhzUA1BFjejAlT2zIGNOjUFagF8ao0wGElYfuk0bum6Hz5qWAt02QdNNwIDAQAB";//支付宝应用公钥 private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 + @Resource + private UserConponClient userConponClient; + @Autowired + private TAppUserService appUserService; + @Resource + private MerChandiseClient merChandiseClient; + @Autowired + private PayMoneyUtil payMoneyUtil; + + @Resource + private UserCouponPaymentClient userCouponPaymentClient; + + @Autowired + private IRefereeService refereeService; + + @Resource + private WorldCupPaymentClinet worldCupPaymentClinet; + + @Autowired + private UserIntegralChangesService userIntegralChangesService; + + @Resource + private GameRecordClient gameRecordClient; + + + + + + // 对数据进行分页处理的方法 + private static Page<Goods> getPage(List<Goods> dataList, Pageable pageable) { + int start = (int) pageable.getOffset(); + int end = Math.min((start + pageable.getPageSize()), dataList.size()); + return new PageImpl<>(dataList.subList(start, end), pageable, dataList.size()); + } @Override public List<QueryAppUserVO> listAll(QueryAppUser query) { - return appUserMapper.listAll(query); + return appUserMapper.listAll(query); } @Override - public HashMap<String,Object> weeksOfCourseDetailsList(Integer appUserId, Integer stuId, String time, Integer storeId,String lon,String lat) { + 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)); + HashMap<String, Object> map = paymentClient.weeksOfCourseDetailsList(new CourseDetailReq(appUserId, stuId, time, storeId, lon, lat)); return map; } - @Override public List<SelectDto> getSelects(List<Integer> studentIds) { @@ -199,13 +222,14 @@ @Override public Object changeState(AdvertisementChangeStateDTO dto) { - return appUserMapper.changeState(dto.getIds(),dto.getState()); + return appUserMapper.changeState(dto.getIds(), dto.getState()); } @Override public List<TAppUser> queryAPPUserByNameAndPhone(AppUserByNameAndPhoneDTO dto) { return appUserMapper.queryAPPUserByNameAndPhone(dto); } + @Override public List<YearData> getYearUserCount(UserInfoQueryDTO dto) { return appUserMapper.getYearUserCount(dto); @@ -228,14 +252,17 @@ public WeekData getWeekUserCount4(UserInfoQueryDTO dto) { return appUserMapper.getWeekUserCount4(dto); } + @Override public WeekData getWeekUserCount3(UserInfoQueryDTO dto) { return appUserMapper.getWeekUserCount3(dto); } + @Override public WeekData getWeekUserCount2(UserInfoQueryDTO dto) { return appUserMapper.getWeekUserCount2(dto); } + @Override public WeekData getWeekUserCount1(UserInfoQueryDTO dto) { return appUserMapper.getWeekUserCount1(dto); @@ -244,17 +271,17 @@ @Override public List<DayData> getDayUserCount(UserInfoQueryDTO dto) { List<DayData> dayUserCount = appUserMapper.getDayUserCount(dto); - if(dayUserCount.size()<7){ + if (dayUserCount.size() < 7) { for (int i = 1; i <= 6; i++) { String time = LocalDate.now().minusDays(i).toString(); for (DayData dayData : dayUserCount) { - if(!time.equals(dayData.getDay())){ - dayUserCount.add(new DayData(time,0)); + if (!time.equals(dayData.getDay())) { + dayUserCount.add(new DayData(time, 0)); } } } } - dayUserCount.forEach(dayData->dayData.setDay(dayData.getDay().split("-")[2])); + dayUserCount.forEach(dayData -> dayData.setDay(dayData.getDay().split("-")[2])); return dayUserCount.stream().sorted(Comparator.comparing(DayData::getDay)).collect(Collectors.toList()); } @@ -262,17 +289,14 @@ public List<GroupCityInfoVO> groupCityInfo(UserInfoQueryDTO dto) { return appUserMapper.groupCityInfo(dto); } + @Override - public ClassInfoVo queryUserOfStus(Integer id,Integer uid) { + public ClassInfoVo queryUserOfStus(Integer id, Integer uid) { TAppUser tAppUser = this.baseMapper.selectById(uid); ClassInfoVo classInfoVo = new ClassInfoVo(); -// if (ToolUtil.isNotEmpty(tAppUser)){ - -// - List<TStudent> tStudents = new ArrayList<>(); - if (id!=null) { - tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() + if (id != null) { + tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() .eq("id", id).eq("state", 1)); if (tStudents.size() == 0) { @@ -280,74 +304,73 @@ .eq("appUserId", tAppUser.getId()) .eq("state", 1)); } - }else { - tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() - .eq("appUserId",tAppUser.getId()) - .eq("state",1) - .eq("isDefault",1)); - if (tStudents==null){ - tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() - .eq("appUserId",tAppUser.getId()) - .eq("state",1)) - ; - } + } else { + tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() + .eq("appUserId", tAppUser.getId()) + .eq("state", 1) + .eq("isDefault", 1)); + if (tStudents.isEmpty()) { + tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() + .eq("appUserId", tAppUser.getId()) + .eq("state", 1)) + ; + } } - if (tStudents.size() > 0 ){ - TStudent tStudent = tStudents.get(0); - classInfoVo.setStuId(tStudent.getId()); - classInfoVo.setIsThere(1); - classInfoVo.setStuImg(tStudent.getHeadImg()); - classInfoVo.setStuSex(tStudent.getSex()); - classInfoVo.setStuAge(DateUtil.age(tStudent.getBirthday())); - classInfoVo.setStuName(tStudent.getName()); - classInfoVo.setHeight(tStudent.getHeight()); - classInfoVo.setWeight(tStudent.getWeight()); - classInfoVo.setBmi(tStudent.getBmi()); - if (tStudent.getBmi()!=null) { - classInfoVo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi())); - } - List<RegisteredCourse> courseList = new ArrayList<>(); - List<StuCourseResp> stuCoursePayment = paymentClient.getStuCoursePayment(tStudent.getId()); - List<Integer> coursePackIds = new ArrayList<>(); - if (stuCoursePayment.size() > 0){ - coursePackIds = stuCoursePayment.stream().map(StuCourseResp::getCourseId).collect(Collectors.toList()); - for (StuCourseResp tCoursePackagePayment : stuCoursePayment) { - RegisteredCourse course = new RegisteredCourse(); - course.setId(tCoursePackagePayment.getId()); - course.setCourseId(tCoursePackagePayment.getCourseId()); - course.setCourseName(tCoursePackagePayment.getCourseName()); - course.setTotalNums(ToolUtil.isEmpty(tCoursePackagePayment.getTotalCourseNums()) ? 0 : tCoursePackagePayment.getTotalCourseNums()); - course.setDeductedNums(ToolUtil.isEmpty(tCoursePackagePayment.getDeductionNums()) ? 0 : tCoursePackagePayment.getDeductionNums()); - course.setRemainingNums(ToolUtil.isEmpty(tCoursePackagePayment.getResidueNums())? 0 : tCoursePackagePayment.getResidueNums()); - course.setPeriodOfValidity(tCoursePackagePayment.getPeriodOfValidity()); - course.setIsAble(tCoursePackagePayment.getIsAble()); - courseList.add(course); - } - } - classInfoVo.setCourseList(courseList); -// List<ExerciseVideo> stuCourseOfVideoList = voclClient.getStuCourseOfVideoList(coursePackIds); - List<ExerciseVideo> query = voclClient.query(tStudent.getId()); - classInfoVo.setExerciseVideoList(query); - - }else { - classInfoVo.setIsThere(2); - List<TImgConfig> tImgConfigs = configClient.getNoneStuImgs(); - if (tImgConfigs.size() > 0){ - classInfoVo.setImgs(tImgConfigs.get(0).getContent()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if (tStudents.size() > 0) { + TStudent tStudent = tStudents.get(0); + classInfoVo.setStuId(tStudent.getId()); + classInfoVo.setIsThere(1); + classInfoVo.setStuImg(tStudent.getHeadImg()); + classInfoVo.setStuSex(tStudent.getSex()); + classInfoVo.setStuAge(DateUtil.age(tStudent.getBirthday())); + classInfoVo.setStuName(tStudent.getName()); + classInfoVo.setHeight(tStudent.getHeight()); + classInfoVo.setWeight(tStudent.getWeight()); + classInfoVo.setBmi(tStudent.getBmi()); + if (tStudent.getBmi() != null) { + classInfoVo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi())); + } + List<RegisteredCourse> courseList = new ArrayList<>(); + List<StuCourseResp> stuCoursePayment = paymentClient.getStuCoursePayment(tStudent.getId()); + if (stuCoursePayment.size() > 0) { + for (StuCourseResp tCoursePackagePayment : stuCoursePayment) { + RegisteredCourse course = new RegisteredCourse(); + course.setId(tCoursePackagePayment.getId()); + course.setCourseId(tCoursePackagePayment.getCourseId()); + course.setCourseName(tCoursePackagePayment.getCourseName()); + course.setTotalNums(ToolUtil.isEmpty(tCoursePackagePayment.getTotalCourseNums()) ? 0 : tCoursePackagePayment.getTotalCourseNums()); + course.setDeductedNums(ToolUtil.isEmpty(tCoursePackagePayment.getDeductionNums()) ? 0 : tCoursePackagePayment.getDeductionNums()); + course.setRemainingNums(ToolUtil.isEmpty(tCoursePackagePayment.getResidueNums()) ? 0 : tCoursePackagePayment.getResidueNums()); + course.setPeriodOfValidity(sdf.format(tStudent.getValidity())); + course.setIsAble(tCoursePackagePayment.getIsAble()); + course.setCourseType(tCoursePackagePayment.getCourseType()); + courseList.add(course); } } -// } + classInfoVo.setCourseList(courseList); + List<ExerciseVideo> query = voclClient.query(tStudent.getId()); + classInfoVo.setExerciseVideoList(query); + + } else { + classInfoVo.setIsThere(2); + List<TImgConfig> tImgConfigs = configClient.getNoneStuImgs(); + if (tImgConfigs.size() > 0) { + classInfoVo.setImgs(tImgConfigs.get(0).getContent()); + } + } return classInfoVo; } /** * 处理数据 + * * @param storeOfCourses * @param longitude * @param latitude * @return */ - public List<CourseVenue> dealDatas(List<CourseOfStoreVo> storeOfCourses, String longitude , String latitude){ + public List<CourseVenue> dealDatas(List<CourseOfStoreVo> storeOfCourses, String longitude, String latitude) { List<CourseVenue> courseVenues = new ArrayList<>(); Map<Integer, List<CourseOfStoreVo>> map = storeOfCourses.stream().collect(Collectors.groupingBy(CourseOfStoreVo::getStoreId)); for (Map.Entry<Integer, List<CourseOfStoreVo>> integerListEntry : map.entrySet()) { @@ -356,9 +379,9 @@ CourseVenue courseVenue = new CourseVenue(); courseVenue.setStoreId(storeId); courseVenue.setAreaName(value.get(0).getCourseName()); - if (ToolUtil.isEmpty(longitude) && ToolUtil.isEmpty(latitude)){ - courseVenue.setSiteDistance(0+""); - }else { + if (ToolUtil.isEmpty(longitude) && ToolUtil.isEmpty(latitude)) { + courseVenue.setSiteDistance(0 + ""); + } else { courseVenue.setSiteDistance(LonlatUtils.distance(Double.parseDouble(longitude), Double.parseDouble(latitude), Double.parseDouble(value.get(0).getLon()), Double.parseDouble(value.get(0).getLat())) + ""); } @@ -382,28 +405,28 @@ return courseVenues; } - /** * 获取短信验证码 - * @param type 1:登录,2:注册,3:修改密码,4:忘记密码 + * + * @param type 1:登录,2:注册,3:修改密码,4:忘记密码 * @param phone * @return * @throws Exception */ @Override public ResultUtil getSMSCode(Integer type, String phone) throws Exception { - if(type == 2){ + if (type == 2) { TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3)); - if(null != tAppUser){ + if (null != tAppUser) { return ResultUtil.error("账号已存在"); } } String numberRandom = UUIDUtil.getNumberRandom(6); String templateCode = ""; - if(type == 1 || type == 2){ + if (type == 1 || type == 2) { templateCode = "SMS_161275250"; } - if(type == 3 || type == 4){ + if (type == 3 || type == 4) { templateCode = "SMS_160960014"; } aLiSendSms.sendSms(phone, templateCode, "{\"code\":\"" + numberRandom + "\"}"); @@ -411,20 +434,22 @@ return ResultUtil.success(); } - /** * 注册用户 + * * @return * @throws Exception */ @Override public ResultUtil addAppUser(AddAppUserVo addAppUserVo) throws Exception { - TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", addAppUserVo.getPhone()).ne("state", 3)); - if(null != tAppUser){ + TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>() + .eq("phone", addAppUserVo.getPhone()) + .ne("state", 3)); + if (null != tAppUser) { return ResultUtil.error("账号已存在"); } String value = redisUtil.getValue(addAppUserVo.getPhone()); - if(!"123456".equals(addAppUserVo.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(addAppUserVo.getCode()))){ + if (!"123456".equals(addAppUserVo.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(addAppUserVo.getCode()))) { return ResultUtil.error("验证码无效"); } @@ -435,49 +460,64 @@ tAppUser.setIsVip(0); tAppUser.setState(1); tAppUser.setInsertTime(new Date()); - - - + tAppUser.setProvince(""); + tAppUser.setProvinceCode(""); + tAppUser.setCity(""); + tAppUser.setCityCode(""); + // 注册用户 + int insert = this.baseMapper.insert(tAppUser); // 介绍有礼 - if(addAppUserVo.getReferralUserId()!=null || ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())){ - if(ToolUtil.isEmpty(addAppUserVo.getLat()) || ToolUtil.isEmpty(addAppUserVo.getLon())){ + if (addAppUserVo.getReferralUserId() != null || ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())) { + if (ToolUtil.isEmpty(addAppUserVo.getLat()) || ToolUtil.isEmpty(addAppUserVo.getLon())) { return ResultUtil.error("请先开启定位", ""); } 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"); + if (null != geocode) { String cityCode = geocode.get("cityCode"); - num = introduceRewardsClient.getGiftList(cityCode); - } - if(ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())){ - List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, addAppUserVo.getInvitePhone())); - if(tAppUsers.size()>0){ - addAppUserVo.setReferralUserId(tAppUsers.get(0).getId()); + // 根据所在市code 查询是否有介绍有礼活动 + List<IntroduceRewards> res = introduceRewardsClient.getGiftList(cityCode); + if (res != null) { + for (IntroduceRewards re : res) { + Integer num = re.getGiveClass(); + Integer activityId = re.getId(); + if (ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())) { + List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>() + .eq(TAppUser::getPhone, addAppUserVo.getInvitePhone())); + if (tAppUsers.size() > 0) { + addAppUserVo.setReferralUserId(tAppUsers.get(0).getId()); + } + } + if (num != 0) { + TAppGift tAppGift = new TAppGift(); + TAppUser phone = appUserService.getOne(new QueryWrapper<TAppUser>() + .eq("phone", addAppUserVo.getInvitePhone())); + if (phone == null) { + return ResultUtil.error("推荐人手机号未注册玩湃会员!"); + } else { + tAppGift.setUserName(phone.getName()); + tAppGift.setUserPhone(phone.getPhone()); + } + tAppGift.setUserId(addAppUserVo.getReferralUserId()); + tAppGift.setNum(num); + tAppGift.setShareUserId(tAppUser.getId()); + tAppGift.setShareUserName(tAppUser.getPhone()); + tAppGift.setShareUserPhone(tAppUser.getPhone()); + tAppGift.setActivityId(activityId); + tAppGift.setInsertTime(new Date()); + appGiftService.save(tAppGift); + } + } } } - 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); - } - } - this.baseMapper.insert(tAppUser); + return ResultUtil.success(); } - /** * 账号密码登录 + * * @param phone * @param password * @return @@ -486,52 +526,53 @@ @Override public ResultUtil loginPassword(String phone, String password) throws Exception { TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3)); - if(null == tAppUser){ + if (null == tAppUser) { return ResultUtil.error("请先注册", ""); } - if(tAppUser.getState() == 2){ + if (tAppUser.getState() == 2) { return ResultUtil.errorCode("您的账号已被冻结", ""); } // password = Md5Util.MD5Encode(password, null); - if(!tAppUser.getPassword().equals(password)){ + if (!tAppUser.getPassword().equals(password)) { return ResultUtil.error("账号密码错误", ""); } String token = getToken(tAppUser); return ResultUtil.success(token); } - /** * 验证码登录 + * * @return * @throws Exception */ @Override public ResultUtil loginSMSCode(LoginSMSCodeVo loginSMSCodeVo) throws Exception { String value = redisUtil.getValue(loginSMSCodeVo.getPhone()); - if(!"123456".equals(loginSMSCodeVo.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(loginSMSCodeVo.getCode()))){ + if (!"123456".equals(loginSMSCodeVo.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(loginSMSCodeVo.getCode()))) { return ResultUtil.error("验证码无效", ""); } TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", loginSMSCodeVo.getPhone()).ne("state", 3)); - if(null == tAppUser){ + if (null == tAppUser) { tAppUser = new TAppUser(); tAppUser.setCode(UUIDUtil.getNumberRandom(16)); tAppUser.setPhone(loginSMSCodeVo.getPhone()); tAppUser.setPassword(Md5Util.MD5Encode("111111", null)); tAppUser.setIsVip(0); tAppUser.setState(1); + tAppUser.setInsertTime(new Date()); this.baseMapper.insert(tAppUser); } - if(tAppUser.getState() == 2){ + if (tAppUser.getState() == 2) { return ResultUtil.error("您的账号已被冻结", ""); } String token = getToken(tAppUser); return ResultUtil.success(token); } - /** * 微信登录 + * * @return * @throws Exception */ @@ -539,9 +580,9 @@ public ResultUtil loginWechat(LoginWeChatVo loginWechatVo) throws Exception { TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("openid", loginWechatVo.getOpenId()).ne("state", 3)); - if(null == tAppUser){ + if (null == tAppUser) { tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", loginWechatVo.getPhone()).ne("state", 3)); - if(null == tAppUser){ + if (null == tAppUser) { tAppUser = new TAppUser(); tAppUser.setCode(UUIDUtil.getNumberRandom(16)); tAppUser.setOpenid(loginWechatVo.getOpenId()); @@ -553,17 +594,21 @@ tAppUser.setGender(loginWechatVo.getSex()); tAppUser.setState(1); tAppUser.setInsertTime(new Date()); + tAppUser.setProvince(""); + tAppUser.setProvinceCode(""); + tAppUser.setCity(""); + tAppUser.setCityCode(""); this.baseMapper.insert(tAppUser); } } - if(tAppUser.getState() == 2){ + if (tAppUser.getState() == 2) { return ResultUtil.error("您的账号已被冻结", ""); } - if(ToolUtil.isEmpty(tAppUser.getOpenid())){ + if (ToolUtil.isEmpty(tAppUser.getOpenid())) { tAppUser.setOpenid(loginWechatVo.getOpenId()); } - if(ToolUtil.isEmpty(tAppUser.getPhone())){ + if (ToolUtil.isEmpty(tAppUser.getPhone())) { tAppUser.setPhone(loginWechatVo.getPhone()); } this.updateById(tAppUser); @@ -571,22 +616,22 @@ String token = getToken(tAppUser); HashMap<String, String> map = new HashMap<>(); - map.put("token",token); - if(ToolUtil.isEmpty(tAppUser.getPhone())){ - map.put("isBind","0"); - }else { - map.put("isBind","1"); + map.put("token", token); + if (ToolUtil.isEmpty(tAppUser.getPhone())) { + map.put("isBind", "0"); + } else { + map.put("isBind", "1"); } return ResultUtil.success(map); } - /** * 获取JWT token和存储个人信息 + * * @param appUser * @return */ - private String getToken(TAppUser appUser){ + private String getToken(TAppUser appUser) { String randomKey = jwtTokenUtil.getRandomKey(); String token = jwtTokenUtil.generateToken(appUser.getId().toString(), randomKey); redisUtil.setStrValue(token.substring(token.length() - 32), String.valueOf(appUser.getId()), 7 * 24 * 60 * 60); @@ -595,9 +640,9 @@ return token; } - /** * 修改密码 + * * @param phone * @param code * @param password @@ -607,17 +652,17 @@ @Override public ResultUtil updatePassword(String phone, String code, String password) throws Exception { String value = redisUtil.getValue(phone); - if(!"123456".equals(code) && (ToolUtil.isEmpty(value) || !value.equals(code))){ + if (!"123456".equals(code) && (ToolUtil.isEmpty(value) || !value.equals(code))) { return ResultUtil.error("验证码无效"); } TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3)); - if(tAppUser==null){ + if (tAppUser == null) { return ResultUtil.error("该账号未注册", ""); } - if(tAppUser.getState() == 2){ + if (tAppUser.getState() == 2) { return ResultUtil.error("您的账号已被冻结", ""); } - if (tAppUser.getCode()==null){ + if (tAppUser.getCode() == null) { tAppUser.setCode(UUIDUtil.getNumberRandom(16)); } tAppUser.setPassword(password); @@ -625,6 +670,26 @@ return ResultUtil.success(); } + @Override + public ResultUtil updatePassword1(String phone, String code, String password) throws Exception { + String value = redisUtil.getValue(phone); + if (!"123456".equals(code) && (ToolUtil.isEmpty(value) || !value.equals(code))) { + return ResultUtil.error("验证码无效"); + } + TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3)); + if (tAppUser == null) { + return ResultUtil.error("该账号未注册", ""); + } + if (tAppUser.getState() == 2) { + return ResultUtil.error("您的账号已被冻结", ""); + } + if (tAppUser.getCode() == null) { + tAppUser.setCode(UUIDUtil.getNumberRandom(16)); + } + tAppUser.setPassword(password); + this.updateById(tAppUser); + return ResultUtil.success(); + } /** * 定时任务修改到期会员的状态 @@ -634,9 +699,9 @@ this.baseMapper.membershipEnd(); } - /** * 获取加入玩湃首页数据 + * * @param lon * @param lat * @return @@ -645,9 +710,9 @@ @Override public JoinPlayPaiVo queryJoinPlayPai(Integer uid, String lon, String lat) throws Exception { TAppUser appUser = this.getById(uid); - if(ToolUtil.isEmpty(appUser.getProvince()) && ToolUtil.isNotEmpty(lon)){ + if (ToolUtil.isEmpty(appUser.getProvince()) && ToolUtil.isNotEmpty(lon)) { Map<String, String> geocode = gdMapGeocodingUtil.geocode(lon, lat); - if(null != geocode){ + if (null != geocode) { String province = geocode.get("province"); String provinceCode = geocode.get("provinceCode"); String city = geocode.get("city"); @@ -663,12 +728,12 @@ JoinPlayPaiVo joinPlayPaiVo = new JoinPlayPaiVo(); joinPlayPaiVo.setIsVip(appUser.getIsVip()); - if(ToolUtil.isEmpty(lon) ||ToolUtil.isEmpty(lat)){ + if (ToolUtil.isEmpty(lon) || ToolUtil.isEmpty(lat)) { return joinPlayPaiVo; } Map<String, String> geocode = gdMapGeocodingUtil.geocode(lon, lat); - if(null != geocode){ + if (null != geocode) { String provinceCode = geocode.get("provinceCode"); String cityCode = geocode.get("cityCode"); List<Store> stores = storeClient.queryStoreList(new QueryStoreList(provinceCode, cityCode)); @@ -677,7 +742,7 @@ for (Store store : stores) { Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat()); Double wgs84 = distance.get("WGS84"); - if(s == null || d>wgs84){ + if (s == null || d > wgs84) { s = store; d = wgs84; } @@ -696,17 +761,20 @@ } @Override - public IndexOfUserBenefirVo queryBenefitDetails(Integer appUserId,String lon,String lat) { + public IndexOfUserBenefirVo queryBenefitDetails(Integer appUserId, String lon, String lat) { IndexOfUserBenefirVo benefirVo = new IndexOfUserBenefirVo(); - TAppUser appUser = this.getById(appUserId); - benefirVo.setUserHeadImg(appUser.getHeadImg()); + if (appUser.getHeadImg() != null) { + benefirVo.setUserHeadImg(appUser.getHeadImg()); + } else { + benefirVo.setUserHeadImg("https://we-park-life.oss-cn-beijing.aliyuncs.com/img/630864764d3c4e98822ff976a2389559.jpg"); + } benefirVo.setUserName(appUser.getName()); benefirVo.setWpCoin(ToolUtil.isEmpty(appUser.getPlayPaiCoins()) ? 0 : appUser.getPlayPaiCoins()); benefirVo.setUserIntegral(ToolUtil.isEmpty(appUser.getIntegral()) ? 0 : appUser.getIntegral()); - if (appUser.getIsVip() == 1){ + if (appUser.getIsVip() == 1) { benefirVo.setIsMember("年度会员"); - }else { + } else { benefirVo.setIsMember("普通用户"); } @@ -716,11 +784,13 @@ List<IntegralCommodity> convertibleGoods = mcClient.getConvertibleGoods(location); benefirVo.setCommodities(convertibleGoods); benefirVo.setImage(icfgClient.getImageConfig()); + Referee referee = refereeService.getOne(new QueryWrapper<Referee>().eq("phone", appUser.getPhone()).eq("state", 1)); + benefirVo.setReferee(null == referee ? 0 : 1); return benefirVo; } @Override - public List<ConsumeDetail> queryUserBillingDetails(String yearMonth, Integer recordId, Integer appUserId) { + public List<ConsumeDetail> queryUserBillingDetails(String yearMonth, Integer recordId, Integer appUserId) { List<ConsumeDetail> details = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); @@ -741,91 +811,93 @@ requestVo.setAppUserId(appUserId); // 1.赛事报名 BillingRequestVo allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(requestVo); - if (ToolUtil.isNotEmpty(allCompetitionPayRecord.getRequests())){ + if (ToolUtil.isNotEmpty(allCompetitionPayRecord.getRequests())) { for (BillingRequest paymentCompetition : allCompetitionPayRecord.getRequests()) { ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg()); consumeDetail.setConsumeTime(paymentCompetition.getTime()); consumeDetail.setConsumeAmount("-" + paymentCompetition.getAmount()); consumeDetail.setType(2); + consumeDetail.setDateTime(paymentCompetition.getDateTime()); details.add(consumeDetail); } } // 2.取消赛事报名 BillingRequestVo cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(requestVo); - if (ToolUtil.isNotEmpty(cancelOrderOfUserPayRecord.getRequests())){ + if (ToolUtil.isNotEmpty(cancelOrderOfUserPayRecord.getRequests())) { for (BillingRequest paymentCompetition : cancelOrderOfUserPayRecord.getRequests()) { ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_EVENT_REGISTRATION.getMsg()); consumeDetail.setConsumeTime(paymentCompetition.getTime()); consumeDetail.setConsumeAmount("+" + paymentCompetition.getAmount()); consumeDetail.setType(1); + consumeDetail.setDateTime(paymentCompetition.getDateTime()); details.add(consumeDetail); } } -// 3.课包购买 -// BillingRequestVo amountPayRecord = paymentClient.getAmountPayRecord(requestVo); -// if (ToolUtil.isNotEmpty(amountPayRecord.getRequests())){ -// for (BillingRequest coursePackagePayment : amountPayRecord.getRequests()) { -// ConsumeDetail consumeDetail = new ConsumeDetail(); -// consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg()); -// consumeDetail.setConsumeTime(coursePackagePayment.getTime()); -// consumeDetail.setConsumeAmount("-" + coursePackagePayment.getAmount()); -// consumeDetail.setType(2); -// details.add(consumeDetail); -// } -// } - //2.0 - List<CourseCounsum> courseCounsums = paymentClient.getConsumes(requestVo); + //3.课包购买 + List<CoursePackageOrder> coursePackageOrder = paymentClient.getCoursePackageOrder(requestVo); - for (CourseCounsum courseCounsum : courseCounsums) { + for (CoursePackageOrder order : coursePackageOrder) { ConsumeDetail consumeDetail = new ConsumeDetail(); - String[] split = courseCounsum.getReason().split(";"); - consumeDetail.setConsumeName(split[0]); - consumeDetail.setConsumeTime(simpleDateFormat.format(courseCounsum.getInsertTime())); -// if (courseCounsum.getChangeType()==3){ - consumeDetail.setConsumeAmount("-" + split[1]); - consumeDetail.setType(2); -// } -// -// consumeDetail.setConsumeAmount("-" + coursePackagePayment.getAmount()); -// consumeDetail.setType(2); + consumeDetail.setConsumeName("课程报名"); + consumeDetail.setConsumeTime(simpleDateFormat.format(order.getInsertTime())); + consumeDetail.setConsumeAmount("-" + order.getCashPayment()); + consumeDetail.setType(2); + consumeDetail.setDateTime(order.getInsertTime().getTime()); details.add(consumeDetail); } // 4.场地预约 RequestOfTypeVo allSiteBookingList = stClient.getAllSiteBookingList(requestVo); - if (ToolUtil.isNotEmpty(allSiteBookingList.getRequest())){ + if (ToolUtil.isNotEmpty(allSiteBookingList.getRequest())) { for (BillingRequestOfType booking : allSiteBookingList.getRequest()) { ConsumeDetail consumeDetail = new ConsumeDetail(); - if (booking.getStatus() != 5){ + if (booking.getStatus() != 5) { consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg()); consumeDetail.setConsumeAmount("-" + booking.getAmount()); consumeDetail.setConsumeTime(booking.getTime()); consumeDetail.setType(2); + consumeDetail.setDateTime(booking.getDateTime()); details.add(consumeDetail); - }else { + } else { ConsumeDetail consumeDetail1 = new ConsumeDetail(); consumeDetail1.setConsumeName(RechargeRecordEnum.CANCEL_VENUE_RESERVATION.getMsg()); consumeDetail1.setConsumeAmount("+" + booking.getAmount()); consumeDetail1.setConsumeTime(booking.getTime()); + consumeDetail1.setDateTime(booking.getDateTime()); consumeDetail1.setType(1); details.add(consumeDetail1); + ConsumeDetail consumeDetail2 = new ConsumeDetail(); consumeDetail2.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg()); consumeDetail2.setConsumeAmount("-" + booking.getAmount()); consumeDetail2.setConsumeTime(booking.getTime1()); consumeDetail2.setType(2); + consumeDetail2.setDateTime(booking.getDateTime()); details.add(consumeDetail2); - } -// details.add(consumeDetail); } } // 5.智慧球场 + GetTGameRecord getTGameRecord = new GetTGameRecord(); + getTGameRecord.setAppUserId(appUserId); + getTGameRecord.setStartTiem(monthStart); + getTGameRecord.setEndTime(monthEnd); + List<TGameRecord> tGameRecord = gameRecordClient.getTGameRecord(getTGameRecord); + for (TGameRecord gameRecord : tGameRecord) { + ConsumeDetail consumeDetail = new ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.SMART_STADIUM.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(gameRecord.getTime())); + consumeDetail.setConsumeAmount("-" + gameRecord.getMoney()); + consumeDetail.setType(2); + consumeDetail.setDateTime(gameRecord.getTime().getTime()); + details.add(consumeDetail); + } + // 6.年度会员 List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>() .eq("payStatus", 2) @@ -838,6 +910,7 @@ consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); consumeDetail.setConsumeAmount("-" + vipPayment.getAmount()); consumeDetail.setType(2); + consumeDetail.setDateTime(vipPayment.getPayTime().getTime()); details.add(consumeDetail); } } @@ -849,10 +922,11 @@ if (rechargeRecords.size() > 0) { for (RechargeRecords rechargeRecord : rechargeRecords) { ConsumeDetail consumeDetail = new ConsumeDetail(); - consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins()); + consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins() + "币"); consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); consumeDetail.setConsumeAmount("-" + rechargeRecord.getAmount()); consumeDetail.setType(2); + consumeDetail.setDateTime(rechargeRecord.getPayTime().getTime()); details.add(consumeDetail); } } @@ -863,37 +937,64 @@ details.addAll(consumeDetails); - if (details.size() > 0 ){ + //世界杯 + GetWorldCupPayment getWorldCupPayment = new GetWorldCupPayment(); + getWorldCupPayment.setAppUserId(appUserId); + getWorldCupPayment.setPayType("1,2"); + getWorldCupPayment.setStartTime(monthStart); + getWorldCupPayment.setEndTime(monthEnd); + List<WorldCupPayment> worldCupPayment = worldCupPaymentClinet.getWorldCupPayment(getWorldCupPayment); + for (WorldCupPayment cupPayment : worldCupPayment) { + ConsumeDetail consumeDetail = new ConsumeDetail(); + if(cupPayment.getPayStatus() != 3){ + consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); + consumeDetail.setConsumeAmount("-" + cupPayment.getAmount()); + consumeDetail.setType(2); + consumeDetail.setDateTime(cupPayment.getPayTime().getTime()); + details.add(consumeDetail); + }else{ + consumeDetail = new ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); + consumeDetail.setConsumeAmount("-" + cupPayment.getAmount()); + consumeDetail.setType(2); + consumeDetail.setDateTime(cupPayment.getPayTime().getTime()); + details.add(consumeDetail); + + consumeDetail = new ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_WORLD_CIP_PAYMENT.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); + consumeDetail.setConsumeAmount("+" + cupPayment.getRefundAmount()); + consumeDetail.setType(1); + consumeDetail.setDateTime(cupPayment.getRefundTime().getTime()); + details.add(consumeDetail); + } + } + + + if (details.size() > 0) { Collections.sort(details, new Comparator<ConsumeDetail>() { @Override public int compare(ConsumeDetail record1, ConsumeDetail record2) { - SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm"); - Date date1 = null; - Date date2 = null; - try { - date1 = dateFormat.parse(record1.getConsumeTime()); - date2 = dateFormat.parse(record2.getConsumeTime()); - } catch (ParseException e) { - e.printStackTrace(); - } - // 倒序排序 - return date2.compareTo(date1); + return record1.getDateTime().compareTo(record2.getDateTime()) * -1; } }); - if (ToolUtil.isNotEmpty(recordId)){ + if (ToolUtil.isNotEmpty(recordId)) { details = details.stream() .filter(response -> Objects.equals(response.getType(), recordId)) .collect(Collectors.toList()); } } + return details; } @Override public void cancellation(Integer appUserId) { TAppUser tAppUser = this.baseMapper.selectById(appUserId); - if (null != tAppUser){ + if (null != tAppUser) { tAppUser.setState(3); this.baseMapper.updateById(tAppUser); } @@ -905,14 +1006,14 @@ TAppUser tAppUser = this.baseMapper.selectById(appUserId); List<Map<String, Object>> rechargeConfig = reconMapper.getRechargeConfig(); System.out.println(rechargeConfig); - if (rechargeConfig.size() > 0 ){ + if (rechargeConfig.size() > 0) { for (Map<String, Object> stringObjectMap : rechargeConfig) { RechargeCentVo vo = new RechargeCentVo(); Double money = (Double) stringObjectMap.get("money"); - vo.setAmount(BigDecimal.valueOf(money) ); - if (tAppUser.getIsVip() == 1){ + vo.setAmount(BigDecimal.valueOf(money)); + if (tAppUser.getIsVip() == 1 && tAppUser.getVipEndTime().after(new Date())) { vo.setWpGold((Integer) stringObjectMap.get("MemberCoins")); - }else { + } else { vo.setWpGold((Integer) stringObjectMap.get("usersCoins")); } centVos.add(vo); @@ -922,7 +1023,7 @@ } @Override - public List<Goods> queryAppUserIntegral(MallRequest request ) { + public List<Goods> queryAppUserIntegral(MallRequest request) { List<Goods> goods = new ArrayList<>(); CommodityRequest commodityRequest = new CommodityRequest(); @@ -941,7 +1042,7 @@ if (vicinityGood.getRedemptionMethod() == 1) { commodity.setIntegral(vicinityGood.getIntegral().intValue()); } else { - commodity.setIntegral(ToolUtil.isEmpty(vicinityGood.getIntegral())?0:vicinityGood.getIntegral()); + commodity.setIntegral(ToolUtil.isEmpty(vicinityGood.getIntegral()) ? 0 : vicinityGood.getIntegral()); commodity.setAmount(vicinityGood.getCash()); } commodity.setBelongsType(vicinityGood.getUserPopulation()); @@ -981,7 +1082,7 @@ if (vicinityGood.getRedemptionMethod() == 1) { commodity.setIntegral(vicinityGood.getIntegral().intValue()); } else { - commodity.setIntegral(ToolUtil.isEmpty(vicinityGood.getIntegral())?0:vicinityGood.getIntegral()); + commodity.setIntegral(ToolUtil.isEmpty(vicinityGood.getIntegral()) ? 0 : vicinityGood.getIntegral()); commodity.setAmount(vicinityGood.getCash()); } commodity.setBelongsType(vicinityGood.getUserPopulation()); @@ -996,6 +1097,7 @@ goods.add(commodity); } } + List<Coupon> allCoupons = ucponClient.getAllCoupons(commodityRequest); if (allCoupons.size() > 0) { for (Coupon allCoupon : allCoupons) { @@ -1007,7 +1109,7 @@ if (allCoupon.getRedemptionMethod() == 1) { commodity.setIntegral(allCoupon.getIntegral().intValue()); } else { - if (allCoupon.getIntegral()!=null) { + if (allCoupon.getIntegral() != null) { commodity.setIntegral(allCoupon.getIntegral().intValue()); } commodity.setAmount(allCoupon.getCash()); @@ -1021,40 +1123,40 @@ } } - if (StringUtils.hasText(request.getSearch())){ - if (goods.size() > 0 ){ + if (StringUtils.hasText(request.getSearch())) { + if (goods.size() > 0) { goods = goods.stream() .filter(merchandise -> merchandise.getGoodName().contains(request.getSearch())) .collect(Collectors.toList()); } } // 2.0 门店筛选 - if (request.getShopId()!=null){ - if (goods.size() > 0 ){ + if (request.getShopId() != null) { + if (goods.size() > 0) { goods = goods.stream() - .filter( merchandise ->(merchandise.getGoodsType() == 1&&merchandise.getUseScope() == 2)||(merchandise.getGoodsType() == 1&&merchandise.getUseScope() == 1)||(merchandise.getGoodsType() == 4&&merchandise.getUseScope() == 2)||(merchandise.getGoodsType() == 4&&merchandise.getUseScope() == 1)||merchandise.getShopIds().contains(request.getShopId())) + .filter(merchandise -> (merchandise.getGoodsType() == 1 && merchandise.getUseScope() == 2) || (merchandise.getGoodsType() == 1 && merchandise.getUseScope() == 1) || (merchandise.getGoodsType() == 4 && merchandise.getUseScope() == 2) || (merchandise.getGoodsType() == 4 && merchandise.getUseScope() == 1) || merchandise.getShopIds().contains(request.getShopId())) .collect(Collectors.toList()); } } - if (null != request.getRank()){ - switch (request.getRank()){ + if (null != request.getRank()) { + switch (request.getRank()) { case 1: - if (goods.size() > 0 ){ + if (goods.size() > 0) { goods = goods.stream() .sorted(Comparator.comparing(Goods::getIntegral).reversed()) .collect(Collectors.toList()); } break; case 2: - if (goods.size() > 0 ){ + if (goods.size() > 0) { goods = goods.stream() .sorted(Comparator.comparing(Goods::getIntegral)) .collect(Collectors.toList()); } break; case 3: - if (goods.size() > 0 ){ + if (goods.size() > 0) { goods = goods.stream() .sorted(Comparator.comparing(Goods::getNums).reversed()) .collect(Collectors.toList()); @@ -1065,8 +1167,8 @@ } } - if (null != request.getGoodsType()){ - if (goods.size() > 0 ){ + if (null != request.getGoodsType()) { + if (goods.size() > 0) { goods = goods.stream() .filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType())) .collect(Collectors.toList()); @@ -1084,22 +1186,16 @@ return goods; } - // 对数据进行分页处理的方法 - private static Page<Goods> getPage(List<Goods> dataList, Pageable pageable) { - int start = (int) pageable.getOffset(); - int end = Math.min((start + pageable.getPageSize()), dataList.size()); - return new PageImpl<>(dataList.subList(start, end), pageable, dataList.size()); - } - @Override - public ProductDetailsVo productDetails(Integer goodId, Integer goodsType ) { + public ProductDetailsVo productDetails(Integer goodId, Integer goodsType) { ProductDetailRequest detailsVo = new ProductDetailRequest(); detailsVo.setGoodsType(goodsType); detailsVo.setGoodId(goodId); return mcClient.getGoodDetailsWithId(detailsVo); } + @Override - public ProductDetailsVo goodsDetailsOne(Integer goodId ) { + public ProductDetailsVo goodsDetailsOne(Integer goodId) { return mcClient.getGoodDetailsWithIdOne(goodId); } @@ -1108,95 +1204,90 @@ HashMap<String, String> map = new HashMap<>(); // 1 验证手机号 String value = redisUtil.getValue(dto.getPhone()); - if(!"123456".equals(dto.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(dto.getCode()))){ + if (!"123456".equals(dto.getCode()) && (ToolUtil.isEmpty(value) || !value.equals(dto.getCode()))) { return ResultUtil.error("验证码无效"); } - String token=""; + String token = ""; // 通过openId 找到 - TAppUser tAppUser = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getOpenid, dto.getOpenId()).eq(TAppUser::getState,1)); + TAppUser tAppUser = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getOpenid, dto.getOpenId()).eq(TAppUser::getState, 1)); - if(tAppUser==null){ + if (tAppUser == null) { return ResultUtil.error("该账号未注册"); } - if(tAppUser.getState() == 2){ + if (tAppUser.getState() == 2) { return ResultUtil.error("您的账号已被冻结"); } - List<TAppUser> tAppUsers1 = appUserMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).eq(TAppUser::getState,1)); - if(tAppUsers1.size()>0){ + boolean newUser = false; + List<TAppUser> tAppUsers1 = appUserMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).eq(TAppUser::getState, 1)); + if (tAppUsers1.size() > 0) { TAppUser tAppUser1 = tAppUsers1.get(0); - if(ToolUtil.isNotEmpty(tAppUser1.getOpenid())){ + if (ToolUtil.isNotEmpty(tAppUser1.getOpenid())) { return ResultUtil.error("该手机号已绑定其他微信"); - }else { + } else { tAppUser1.setOpenid(dto.getOpenId()); appUserMapper.updateById(tAppUser1); appUserMapper.deleteById(tAppUser.getId()); token = getToken(tAppUser1); - map.put("token",token); + map.put("token", token); } - }else { + } else { tAppUser.setPhone(dto.getPhone()); appUserMapper.updateById(tAppUser); - token = getToken(tAppUser); - map.put("token",token); - + token = getToken(tAppUser); + map.put("token", token); + newUser = true; } -// tAppUser.setPhone(dto.getPhone()); - - if(ToolUtil.isNotEmpty(dto.getInvitePhone())){ - if(ToolUtil.isEmpty(dto.getLat()) || ToolUtil.isEmpty(dto.getLon())){ + if (newUser && ToolUtil.isNotEmpty(dto.getInvitePhone())) { + if (ToolUtil.isEmpty(dto.getLat()) || ToolUtil.isEmpty(dto.getLon())) { return ResultUtil.error("请先开启定位"); } - TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState,1)); - if(tAppUser1!=null){ - Map<String, String> geocode = null; - try { - geocode = gdMapGeocodingUtil.geocode(dto.getLon(), dto.getLat()); - } catch (Exception e) { - e.printStackTrace(); - } - 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); - } - Integer userId=null; - if(ToolUtil.isNotEmpty(dto.getInvitePhone())){ - List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getInvitePhone())); - if(tAppUsers.size()>0){ - userId = tAppUsers.get(0).getId(); - } - } - if(userId!=null){ - TAppGift one = appGiftService.getOne(new LambdaQueryWrapper<TAppGift>().eq(TAppGift::getUserId, userId)); - if(one!=null){ - one.setNum(one.getNum()+num); - appGiftService.updateById(one); - }else { - TAppGift tAppGift = new TAppGift(); - tAppGift.setUserId(userId); - tAppGift.setNum(num); - appGiftService.save(tAppGift); + TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>() + .eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState, 1)); + if(null == tAppUser1){ + return ResultUtil.error("邀请人还未注册账号"); + } + Map<String, String> geocode = null; + try { + geocode = gdMapGeocodingUtil.geocode(dto.getLon(), dto.getLat()); + } catch (Exception e) { + e.printStackTrace(); + } + if (null != geocode) { + String cityCode = geocode.get("cityCode"); + // 根据所在市code 查询是否有介绍有礼活动 + List<IntroduceRewards> res = introduceRewardsClient.getGiftList(cityCode); + if (res != null) { + for (IntroduceRewards re : res) { + Integer num = re.getGiveClass(); + Integer activityId = re.getId(); + if (num != 0) { + TAppGift tAppGift = new TAppGift(); + tAppGift.setUserName(tAppUser1.getName()); + tAppGift.setUserPhone(tAppUser1.getPhone()); + tAppGift.setUserId(tAppUser1.getId()); + tAppGift.setNum(num); + tAppGift.setShareUserId(tAppUser.getId()); + tAppGift.setShareUserName(tAppUser.getPhone()); + tAppGift.setShareUserPhone(tAppUser.getPhone()); + tAppGift.setActivityId(activityId); + tAppGift.setInsertTime(new Date()); + appGiftService.save(tAppGift); + } } } } } - -// appUserMapper.updateById(tAppUser); - return ResultUtil.success(map); } @Override - public ResultUtil<String> updateInfo(UpdateInfoDto dto,Integer uid) { + public ResultUtil<String> updateInfo(UpdateInfoDto dto, Integer uid) { TAppUser tAppUser = appUserMapper.selectById(uid); - if(ToolUtil.isNotEmpty(dto.getName())){ + if (ToolUtil.isNotEmpty(dto.getName())) { tAppUser.setName(dto.getName()); } - if(ToolUtil.isNotEmpty(dto.getBirthday())){ + if (ToolUtil.isNotEmpty(dto.getBirthday())) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { Date parse = format.parse(dto.getBirthday()); @@ -1206,7 +1297,7 @@ } } - if(ToolUtil.isNotEmpty(dto.getGender())){ + if (ToolUtil.isNotEmpty(dto.getGender())) { tAppUser.setGender(dto.getGender()); } appUserMapper.updateById(tAppUser); @@ -1219,33 +1310,33 @@ } @Override - public StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis,Integer pointsMerId, String lat, String lon,Integer isCourse) { + public StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis, Integer pointsMerId, String lat, String lon, Integer isCourse) { StuAndStoreResponse response = new StuAndStoreResponse(); - if (isCourse == 1){ + if (isCourse == 1) { List<TStudent> tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() - .eq("appUserId",userIdFormRedis) - .eq("state",1) - .eq("isDefault",1)); - if (tStudents.size() > 0 ){ + .eq("appUserId", userIdFormRedis) + .eq("state", 1) + .eq("isDefault", 1)); + if (tStudents.size() > 0) { response.setStuId(tStudents.get(0).getId()); response.setStuName(tStudents.get(0).getName()); response.setStuPhone(tStudents.get(0).getPhone()); response.setStuAge(DateUtil.age(tStudents.get(0).getBirthday())); } return response; - }else { + } else { PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerId); - if (pointsMerchandise.getType() == 4){ + if (pointsMerchandise.getType() == 4) { List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId); StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreIds.get(0)); - if(ToolUtil.isNotEmpty(courseOfStore)){ + if (ToolUtil.isNotEmpty(courseOfStore)) { response.setStoreId(couponStoreIds.get(0)); response.setStoreName(courseOfStore.getStoreName()); } - }else { + } else { List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId); StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integers.get(0)); - if(ToolUtil.isNotEmpty(courseOfStore)){ + if (ToolUtil.isNotEmpty(courseOfStore)) { response.setStoreId(integers.get(0)); response.setStoreName(courseOfStore.getStoreName()); } @@ -1254,123 +1345,134 @@ } } - - - @Resource - private UserConponClient userConponClient; - -@Autowired -private TAppUserService appUserService; - - - - @Override @Transactional public synchronized ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) { - System.out.println("exchangeType:--->"); - - - ReturnModel returnModel = new ReturnModel(); Long returnId = null; - //如果是兑换优惠卷 - if (exchangeType.getGoodsType()==4){ + //如果是兑换优惠卷 + if (exchangeType.getGoodsType() == 4) { //查询优惠卷 Coupon coupon = userConponClient.queryCouponById(exchangeType.getGoodId()); //查询该优惠卷的数量够不够 List<Integer> queryIds = new ArrayList<>(); queryIds.add(coupon.getId()); queryIds.add(userIdFormRedis); - Integer counts = userConponClient.queryCounts(queryIds); - if (coupon.getQuantityIssued()-counts == 0){ - return new ResultUtil(0,"当前数量不足"); - } + Integer counts = userConponClient.queryCounts(queryIds); + if (coupon.getQuantityIssued().compareTo(counts) == 0) { + return new ResultUtil(0, "当前数量不足"); + } //查询该用户是否超出限领数量 - Integer usercounts = userConponClient.queryCounts1(queryIds); - - if (usercounts == coupon.getPickUpQuantity()){ - return new ResultUtil<>(0,"限领数量已达最大"); + Integer usercounts = userConponClient.queryCounts1(queryIds); + if (usercounts == coupon.getPickUpQuantity()) { + return new ResultUtil<>(0, "限领数量已达最大"); } -// userConponClient.queryCouponById(exchangeType.getGoodId()); - UserCoupon userCoupon = new UserCoupon(); - userCoupon.setCouponId(exchangeType.getGoodId()); - userCoupon.setUserId(userIdFormRedis); - userCoupon.setStatus(1); - userCoupon.setInsertTime(new Date()); - userConponClient.insertToAppuserCoupon(userCoupon); - //扣积分 - TAppUser user = appUserService.getById(userIdFormRedis); - if (user.getIntegral()<coupon.getIntegral().intValue()){ - return new ResultUtil<>(0,"当前用户积分不足"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + //生成支付订单 + UserCouponPayment userCouponPayment = new UserCouponPayment(); + userCouponPayment.setCouponId(exchangeType.getGoodId()); + userCouponPayment.setUserId(userIdFormRedis); + userCouponPayment.setStatus(1); + userCouponPayment.setCode(code); + userCouponPayment.setPayType(coupon.getRedemptionMethod()); + userCouponPayment.setIntegral(coupon.getIntegral().intValue()); + userCouponPayment.setCash(null == coupon.getCash() ? 0D : coupon.getCash().doubleValue()); + userCouponPayment.setCashPayType(exchangeType.getPayType()); + userCouponPayment.setInsertTime(new Date()); + + //积分兑换 + if(coupon.getRedemptionMethod() == 1){ + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(exchangeType.getGoodId()); + userCoupon.setUserId(userIdFormRedis); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + //扣积分 + TAppUser user = appUserService.getById(userIdFormRedis); + if (user.getIntegral() < coupon.getIntegral().intValue()) { + return new ResultUtil<>(0, "当前用户积分不足"); + } + user.setIntegral(user.getIntegral() - coupon.getIntegral().intValue()); + appUserService.updateById(user); + + userCouponPayment.setStatus(2); + userCouponPayment.setPaymentTime(new Date()); + userCouponPaymentClient.addUserCouponPayment(userCouponPayment); + return ResultUtil.success(returnId); } - user.setIntegral(user.getIntegral()-coupon.getIntegral().intValue()); - appUserService.updateById(user); - - //记录 -// UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); -// pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); -// pointsMerchandise.setUserId(userIdFormRedis); -// pointsMerchandise.setStatus(1); -// pointsMerchandise.setState(1); -// pointsMerchandise.setPayStatus(1); -//// if (merchandise.getUseScope() == 3){ -//// if (exchangeType.getGoodsType() == 2){ -//// CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); -//// pointsMerchandise.setStoreId(coursePackage.getStoreId()); -//// }else { -//// pointsMerchandise.setStoreId(exchangeType.getStoreId()); -//// } -//// } -//// pointsMerchandise.setCode(code); -// returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise); - - return ResultUtil.success(returnId); + //积分+现金 + if(coupon.getRedemptionMethod() == 2){ + userCouponPaymentClient.addUserCouponPayment(userCouponPayment); + try { + if(exchangeType.getPayType() == 1){ + String temp = "0"; + if (coupon.getPublisherType()!=null && coupon.getPublisherType() != 2){ + // 做分账 + temp = "1"; + } + return weChatPaymentCoupon("购买优惠券-"+temp, userCouponPayment); + } + if(exchangeType.getPayType() == 2){ + return aliPaymentCoupon("购买优惠券", userCouponPayment); + } + } catch (Exception e) { + e.printStackTrace(); + } + } } - - - - - System.out.println(exchangeType); + System.out.println("兑换积分商品"+exchangeType); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); - PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); + PointsMerchandise merchandise = new PointsMerchandise(); + if(exchangeType.getGoodsType() != 4){ + merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); + }else{ + Coupon coupon = ucponClient.queryCouponById(exchangeType.getGoodId()); + merchandise.setId(coupon.getId()); + merchandise.setUserPopulation(coupon.getUserPopulation()); + merchandise.setIntegral(coupon.getIntegral().intValue()); + merchandise.setQuantityIssued(coupon.getQuantityIssued()); + merchandise.setPickUpQuantity(coupon.getPickUpQuantity()); + merchandise.setUseScope(coupon.getUseScope()); + merchandise.setCash(coupon.getCash()); + merchandise.setType(4); + } - - - if (ToolUtil.isEmpty(merchandise)){ + if (ToolUtil.isEmpty(merchandise)) { return ResultUtil.error("商品不存在"); } TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); - if(merchandise.getUserPopulation()==2){ - if(tAppUser.getIsVip()==0){ + if (merchandise.getUserPopulation() == 2) { + if (tAppUser.getIsVip() == 0) { return ResultUtil.error("该商品只能年度会员购买"); } } - if(merchandise.getUserPopulation()==3){ + if (merchandise.getUserPopulation() == 3) { List<TStudent> students = tsmapper.selectList(new LambdaQueryWrapper<TStudent>().eq(TStudent::getAppUserId, userIdFormRedis)); - if(students.size()==0){ + if (students.size() == 0) { return ResultUtil.error("该商品只能已有学员用户购买"); } } - if (ToolUtil.isEmpty(tAppUser)){ + if (ToolUtil.isEmpty(tAppUser)) { return ResultUtil.error("用户不存在"); } int goodsNums = 0; - if (ToolUtil.isEmpty(exchangeType.getNums())){ + if (ToolUtil.isEmpty(exchangeType.getNums())) { goodsNums = 1; - }else { + } else { goodsNums = exchangeType.getNums(); } TAppUser user = appUserService.getById(userIdFormRedis); - if (merchandise.getIntegral()!=null) { + if (merchandise.getIntegral() != null) { if (user.getIntegral() < merchandise.getIntegral().intValue() * goodsNums) { return new ResultUtil<>(0, "当前用户积分不足"); } @@ -1381,137 +1483,170 @@ goodResp.setAppUserId(userIdFormRedis); goodResp.setGoodId(merchandise.getId()); int count = mcClient.queryUserHasGoodsNums(goodResp); - if (ToolUtil.isNotEmpty(count) && count+exchangeType.getNums() > merchandise.getPickUpQuantity()){ + if (ToolUtil.isNotEmpty(count) && count + exchangeType.getNums() > merchandise.getPickUpQuantity()) { return ResultUtil.error("超过限领数量"); } int count1 = mcClient.queryUserHasGoodsNums1(goodResp); - if (ToolUtil.isNotEmpty(count1) && count1 >= merchandise.getQuantityIssued()){ + if (ToolUtil.isNotEmpty(count1) && count1 >= merchandise.getQuantityIssued()) { return ResultUtil.error("超过发放数量"); } - - - - for (int i = 0; i < goodsNums; i++) { -// 新增积分商品兑换记录 - UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); - pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); - pointsMerchandise.setUserId(userIdFormRedis); - if (exchangeType.getGoodsType()==2){ - pointsMerchandise.setStatus(2); - pointsMerchandise.setVerificationTime(new Date()); - }else { - pointsMerchandise.setStatus(1); + //新增积分商品兑换记录 + UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); + pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); + pointsMerchandise.setUserId(userIdFormRedis); + pointsMerchandise.setGoodsNumber(goodsNums); + if (exchangeType.getGoodsType() == 2) { + pointsMerchandise.setStatus(2); + pointsMerchandise.setVerificationTime(new Date()); + } else { + pointsMerchandise.setStatus(1); + } + pointsMerchandise.setState(1); + if (exchangeType.getExchangeType() == 1) { + pointsMerchandise.setPayStatus(2); + pointsMerchandise.setPaymentTime(new Date()); + } else { + pointsMerchandise.setPayStatus(1); + } + if (merchandise.getUseScope() == 3) { + if (exchangeType.getGoodsType() == 2) { + CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); + pointsMerchandise.setStoreId(coursePackage.getStoreId()); + } else { + pointsMerchandise.setStoreId(exchangeType.getStoreId()); } - pointsMerchandise.setState(1); - if (exchangeType.getExchangeType()==1) { - pointsMerchandise.setPayStatus(2); - }else { - pointsMerchandise.setPayStatus(1); - } - if (merchandise.getUseScope() == 3){ - if (exchangeType.getGoodsType() == 2){ - CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); - pointsMerchandise.setStoreId(coursePackage.getStoreId()); - }else { - pointsMerchandise.setStoreId(exchangeType.getStoreId()); - } - } - pointsMerchandise.setCode(code); - returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise); + } + pointsMerchandise.setCode(code); + pointsMerchandise.setInsertTime(new Date()); + pointsMerchandise.setPayType(exchangeType.getExchangeType()); + if(null != merchandise.getIntegral()){ + pointsMerchandise.setIntegral(merchandise.getIntegral() * goodsNums); + } + if(exchangeType.getExchangeType() == 2 || exchangeType.getExchangeType() == 3){ + pointsMerchandise.setCash(merchandise.getCash()); + pointsMerchandise.setCashPayType(exchangeType.getPayType()); + } + + Double m = new BigDecimal((merchandise.getIntegral() == null ? 0 : merchandise.getIntegral())).add((merchandise.getCash() == null ? BigDecimal.ZERO : merchandise.getCash())).doubleValue(); + if((m * goodsNums) == 0) { + pointsMerchandise.setPayStatus(2); + pointsMerchandise.setPaymentTime(new Date()); + } + returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise); + if((m * goodsNums) == 0 && pointsMerchandise.getPayStatus() == 2){ + returnModel.setReturnId(returnId); + return ResultUtil.success(returnModel); } - switch (exchangeType.getExchangeType()){ + System.err.println("兑换方式"+exchangeType); + switch (exchangeType.getExchangeType()) { // 积分 case 1: - boolean b =true; - for (int i = 0; i < goodsNums; i++) { - b = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral()); + boolean b = dealAppUserIntegral(userIdFormRedis, tAppUser, merchandise.getIntegral() * goodsNums); + if (b) switch (exchangeType.getGoodsType()) { + case 2: + code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + CoursePackageOrder coursePackageOrder = new CoursePackageOrder(); + coursePackageOrder.setCode(code); + coursePackageOrder.setAppUserId(userIdFormRedis); + String ids = exchangeType.getStuIds().stream().map(s -> { + return String.valueOf(s); + }).collect(Collectors.joining(";")); + coursePackageOrder.setStudentIds(ids); + coursePackageOrder.setCoursePackageId(merchandise.getCoursePackageId()); + coursePackageOrder.setPayType(4); + CoursePackagePaymentConfig config = null; + for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { + if (coursePackagePaymentConfig.getId().compareTo(merchandise.getCoursePackageConfigId()) == 0) { + coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours()); + coursePackageOrder.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + + config = coursePackagePaymentConfig; + break; + } + } + coursePackageOrder.setPlayPaiCoin(merchandise.getIntegral()); + coursePackageOrder.setPayUserType(1); + coursePackageOrder.setPayStatus(2); + coursePackageOrder.setPayUserId(userIdFormRedis); + coursePackageOrder.setStatus(1); + coursePackageOrder.setState(1); + coursePackageOrder.setInsertTime(new Date()); + coursePackageOrder.setOrderType(2); + Long coursePackageOrderId = paymentClient.savePaymentCoursePackage(coursePackageOrder); + + AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); + addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrderId); + addCoursePackageOrderStudent.setCoursePackagePaymentConfig(config); + paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); + 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; } - if (b){ - 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.setPlayPaiCoin(merchandise.getIntegral()); - packagePayment.setAbsencesNumber(0); - packagePayment.setPayUserType(1); - packagePayment.setPayStatus(2); - packagePayment.setPayUserId(userIdFormRedis); - packagePayment.setStatus(1); - packagePayment.setState(1); - packagePayment.setCode(code); -// paymentClient.savePaymentCoursePackage(packagePayment); - - OrderDto orderDto = new OrderDto(); - orderDto.setAppUserId(userIdFormRedis); - String joinedString = String.join(",", exchangeType.getStuIds().stream().map(Object::toString).collect(Collectors.toList())); - orderDto.setStuIds(joinedString); - orderDto.setClassId(merchandise.getCoursePackageId()); - orderDto.setClassHours(packagePayment.getClassHours()); - paymentClient.orderClass(orderDto); - - - } - break; - case 4: - for (int i = 0; i < goodsNums; i++) { - UserCoupon coupon = new UserCoupon(); - coupon.setCouponId(exchangeType.getGoodId()); - coupon.setUserId(userIdFormRedis); - coupon.setStatus(1); - ucponClient.insertToAppuserCoupon(coupon); - } - break; - default: - break; - } - }else { + else { return ResultUtil.error("用户积分不足!"); } break; case 2: // 积分+现金 - boolean dealt =true; - for (int i = 0; i < goodsNums; i++) { - dealt = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral()); - } - switch (exchangeType.getPayType()) { case 1: try { if (merchandise.getType() == 2) { - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); - } else { - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + CoursePackageOrder coursePackageOrder = new CoursePackageOrder(); + coursePackageOrder.setCode(code); + coursePackageOrder.setAppUserId(userIdFormRedis); + String ids = exchangeType.getStuIds().stream().map(s -> { + return String.valueOf(s); + }).collect(Collectors.joining(";")); + coursePackageOrder.setStudentIds(ids); + coursePackageOrder.setCoursePackageId(merchandise.getCoursePackageId()); + coursePackageOrder.setPayType(5); + CoursePackagePaymentConfig config = null; + for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { + if (coursePackagePaymentConfig.getId().compareTo(merchandise.getCoursePackageConfigId()) == 0) { + coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours()); + coursePackageOrder.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + break; + } + } + coursePackageOrder.setCashPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size()))); + coursePackageOrder.setPlayPaiCoin(merchandise.getIntegral() * exchangeType.getStuIds().size()); + coursePackageOrder.setPayUserType(1); + coursePackageOrder.setPayStatus(1); + coursePackageOrder.setPayUserId(userIdFormRedis); + coursePackageOrder.setStatus(1); + coursePackageOrder.setState(1); + coursePackageOrder.setInsertTime(new Date()); + coursePackageOrder.setOrderType(2); + paymentClient.savePaymentCoursePackage(coursePackageOrder); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,merchandise.getId()); + } else if (merchandise.getType() == 1){ + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId()); + }else if(merchandise.getType() == 3){ + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId()); } } catch (Exception e) { return ResultUtil.runErr(); } case 2: if (merchandise.getType() == 2) { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, returnId); } else { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, returnId); } default: break; @@ -1522,18 +1657,18 @@ case 1: try { if (merchandise.getType() == 2) { - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,merchandise.getId()); } else { - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId()); } } catch (Exception e) { return ResultUtil.runErr(); } case 2: if (merchandise.getType() == 2) { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, returnId); } else { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, returnId); } default: break; @@ -1543,25 +1678,304 @@ break; } - returnModel.setReturnId(returnId); + returnModel.setReturnId(returnId); return ResultUtil.success(returnModel); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); return null; } } - public boolean dealAppUserIntegral(Integer appUserId,TAppUser appUser,Integer points){ + + /** + * 优惠券微信支付 + * @param body + * @param userCouponPayment + * @return + * @throws Exception + */ + public ResultUtil weChatPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { + String code = userCouponPayment.getCode(); + Double cash = userCouponPayment.getCash(); + Integer couponId = userCouponPayment.getCouponId(); + Coupon coupon = userConponClient.queryCouponById(couponId); + String temp ="0"; + if (coupon.getPublisherType()!=null&&coupon.getPublisherType()!=2){ + temp = "1"; + } + System.err.println("购买优惠券"); + ResultUtil weixinpay = payMoneyUtil.weixinpay(body+"-"+temp, "", code, cash.toString(), + "/base/coupon/weChatPaymentCouponCallback", "APP", ""); + if (weixinpay.getCode() == 200) { + new Thread(new Runnable() { + @Override + public void run() { + try { + int num = 1; + int wait = 0; + while (num <= 10) { + int min = 5000; + wait += (min * num); + Thread.sleep(wait); + UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); + if (userCouponPayment1.getStatus() == 2) { + + break; + } + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); + if (resultUtil.getCode() == 200 && userCouponPayment1.getStatus() == 1) { + /** + * SUCCESS—支付成功, + * REFUND—转入退款, + * NOTPAY—未支付, + * CLOSED—已关闭, + * REVOKED—已撤销(刷卡支付), + * USERPAYING--用户支付中, + * PAYERROR--支付失败(其他原因,如银行返回失败) + */ + Map<String, String> data1 = resultUtil.getData(); + String s = data1.get("trade_state"); + String transaction_id = data1.get("transaction_id"); + if ("REFUND".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) { + //有待支付的订单,这里不处理 + userCouponPayment1.setStatus(-1); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + break; + } + if ("SUCCESS".equals(s)) { + userCouponPayment1.setStatus(2); + userCouponPayment1.setPaymentTime(new Date()); + userCouponPayment1.setOrderNumber(transaction_id); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(userCouponPayment1.getCouponId()); + userCoupon.setUserId(userCouponPayment1.getUserId()); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + + if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ + //扣积分 + TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); + user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); + appUserService.updateById(user); + } + break; + } + if ("USERPAYING".equals(s) || "NOTPAY".equals(s)) { + num++; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } + return weixinpay; + } + + + /** + * 优惠券支付宝支付 + * + * @return + * @throws Exception + */ + private String smid = "2088330203191220";//平台支付宝商户号 + public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { + String code = userCouponPayment.getCode(); + Double cash = userCouponPayment.getCash(); + + ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + "/base/coupon/aliPaymentCouponCallback"); + if (alipay.getCode() == 200) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(1000); + + int num = 1; + int wait = 0; + while (num <= 10) { + int min = 5000; + wait += (min * num); + Thread.sleep(wait); + UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); + if (userCouponPayment1.getStatus() == 2) { + break; + } + AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code); + if (null != alipayTradeQueryResponse) { + /** + * WAIT_BUYER_PAY(交易创建,等待买家付款)、 + * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 + * TRADE_SUCCESS(交易支付成功)、 + * TRADE_FINISHED(交易结束,不可退款) + */ + String s = alipayTradeQueryResponse.getTradeStatus(); + + String tradeNo = alipayTradeQueryResponse.getTradeNo(); + if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) { + //有待支付的订单,这里不处理 + userCouponPayment1.setStatus(-1); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + if ("TRADE_FINISHED".equals(s)) { + // todo 资金结算 + + } + break; + } + if ("TRADE_SUCCESS".equals(s)) { + userCouponPayment1.setStatus(2); + userCouponPayment1.setPaymentTime(new Date()); + userCouponPayment1.setOrderNumber(tradeNo); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(userCouponPayment1.getCouponId()); + userCoupon.setUserId(userCouponPayment1.getUserId()); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ + //扣积分 + TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); + user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); + appUserService.updateById(user); + } + payMoneyUtil.confirm(smid,code,tradeNo,cash.toString()); + break; + + } + + if ("WAIT_BUYER_PAY".equals(s)) { + num++; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } + return alipay; + } + + /** + * 支付回调 + * @param code + * @param orderNumber + * @return + */ + @Override + public ResultUtil paymentCouponCallback(String code, String orderNumber) throws Exception { + System.err.println("进入回调"); + UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); + if (userCouponPayment1.getStatus() == 2) { + return ResultUtil.success(); + } + userCouponPayment1.setStatus(2); + userCouponPayment1.setPaymentTime(new Date()); + userCouponPayment1.setOrderNumber(orderNumber); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(userCouponPayment1.getCouponId()); + userCoupon.setUserId(userCouponPayment1.getUserId()); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + + if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ + //扣积分 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(userCouponPayment1.getUserId()); + vo.setIntegral(userCouponPayment1.getIntegral().intValue() * -1); + vo.setRemark("兑换优惠券"); + vo.setType(2); + userIntegralChangesService.saveUserIntegralChanges(vo); + } + Coupon coupon = ucponClient.queryCouponById(userCouponPayment1.getCouponId()); + // 创建一个两分钟后执行的线程 + new Thread(() -> { + try { + Thread.sleep(120000); + if (coupon!=null){ + if (coupon.getPublisherType()!=null&&coupon.getPublisherType()!=2){ + if (coupon.getPublisherType() == 1){ + System.err.println("进入分账逻辑"); + // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 + String proportionByOperatorId = storeClient.getProportionByOperatorId(coupon.getCityManagerId()); + System.err.println("分账比例:"+proportionByOperatorId); + String[] split = proportionByOperatorId.split(","); + String s1 = split[0]; + if (!s1.equals("未设置")){ + BigDecimal bigDecimal = new BigDecimal(s1); + // 分账比例 + BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(coupon.getCityManagerId()); + System.err.println("商户号"+s2); + System.err.println("分账比例"+bigDecimal1); + System.err.println("分账金额"+coupon.getCash().multiply(bigDecimal1)); + ResultUtil fenzhang = payMoneyUtil.fenzhang(userCouponPayment1.getOrderNumber(), coupon.getCash().multiply(bigDecimal1), s2,""); + if (!fenzhang.getCode().equals(200)){ + System.err.println("分账失败 原因是:"+fenzhang.getMsg()); + } + + } + } else if (coupon.getPublisherType() == 3){ + // 门店 向上查询运营商 + Store store = storeClient.queryStoreById(coupon.getCityManagerId()); + if (store.getOperatorId()==null || store.getOperatorId()==0){ + // 平台不分账 + }else{ + // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 + String proportionByOperatorId = storeClient.getProportionByOperatorId(store.getOperatorId()); + String[] split = proportionByOperatorId.split(","); + String s1 = split[0]; + if (!s1.equals("未设置")){ + BigDecimal bigDecimal = new BigDecimal(s1); + // 分账比例 + BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + ResultUtil fenzhang = payMoneyUtil.fenzhang(userCouponPayment1.getOrderNumber(), coupon.getCash().multiply(bigDecimal1), s2,"购买优惠券分账"); + if (!fenzhang.getCode().equals(200)){ + System.err.println("分账失败 原因是:"+fenzhang.getMsg()); + }else{ + System.err.println("分账成功"); + return; + } + + } + } + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + }).start(); + + return ResultUtil.success(); + } + + public boolean dealAppUserIntegral(Integer appUserId, TAppUser appUser, Integer points) { try { - if (ToolUtil.isEmpty(appUser.getIntegral()) || (ToolUtil.isNotEmpty(appUser.getIntegral()) && appUser.getIntegral() < points)){ + if (ToolUtil.isEmpty(appUser.getIntegral()) || (ToolUtil.isNotEmpty(appUser.getIntegral()) && appUser.getIntegral() < points)) { return false; } // 积分变更记录 UserIntegralChanges userIntegralChanges = new UserIntegralChanges(); userIntegralChanges.setAppUserId(appUserId); userIntegralChanges.setOldIntegral(appUser.getIntegral()); - userIntegralChanges.setType(5); + userIntegralChanges.setType(2); appUser.setIntegral(null == appUser.getIntegral() ? points : appUser.getIntegral() - points); userIntegralChanges.setNewIntegral(appUser.getIntegral()); userIntegralChanges.setInsertTime(new Date()); @@ -1570,35 +1984,35 @@ this.baseMapper.updateById(appUser); return true; - }catch (Exception e){ + } catch (Exception e) { return false; } } - private ResultUtil AlipayPayment(BigDecimal cash, String code,Long returnId) { - System.out.println("金额:"+cash); - ResultUtil alipay = payMoneyUtil.alipay("优惠卷", "优惠卷", String.valueOf(returnId), code, cash.toString(), + private ResultUtil AlipayPayment(Integer type, BigDecimal cash, String code, Long returnId) { + String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券"); + ResultUtil alipay = payMoneyUtil.alipay(smid,name, name, String.valueOf(returnId), code, cash.toString(), "/base/pointMer/exchangeGoodPaymentAliCallback"); - if(alipay.getCode() == 200){ + if (alipay.getCode() == 200) { new Thread(new Runnable() { @Override public void run() { try { int num = 1; int wait = 0; - while (num <= 10){ + while (num <= 10) { int min = 5000; wait += (min * num); Thread.sleep(wait); - System.out.println("code:"+code); + System.out.println("code:" + code); List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); - System.out.println("list-----"+userPointsMerchandises); - if(userPointsMerchandises.get(0).getPayStatus() == 2){ + System.out.println("list-----" + userPointsMerchandises); + if (userPointsMerchandises.get(0).getPayStatus() == 2) { break; } // ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code); AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code); - if(resultUtil.getCode().equals("10000") && userPointsMerchandises.get(0).getPayStatus() == 1){ + if (resultUtil.getCode().equals("10000") && userPointsMerchandises.get(0).getPayStatus() == 1) { /** * WAIT_BUYER_PAY(交易创建,等待买家付款)、 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 @@ -1611,18 +2025,24 @@ String tradeNo = resultUtil.getTradeNo(); String tradeStatus = resultUtil.getTradeStatus(); - System.out.println("ssssss"+tradeStatus); + System.out.println("ssssss" + tradeStatus); - if("TRADE_SUCCESS".equals(tradeStatus)){ + if ("TRADE_SUCCESS".equals(tradeStatus)) { for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) { userPointsMerchandise.setPayStatus(2); + userPointsMerchandise.setPaymentTime(new Date()); userPointsMerchandise.setOrderNumber(tradeNo); - userPointsMerchandise.setPayType(2); + userPointsMerchandise.setCashPayType(2); userPointsMerchandise.setInsertTime(null); userPointsMerchandise.setUserId(null); mcClient.updateDetailsUserPointMercase(userPointsMerchandise); } - moneyOut(tradeNo,tradeNo); + moneyOut(tradeNo, tradeNo); + break; + } + if ("TRADE_FINISHED".equals(tradeStatus)) { + // todo 资金结算 + payMoneyUtil.confirm(smid,code,tradeNo,cash.toString()); break; } // if("REFUND".equals(tradeStatus) || "NOTPAY".equals(tradeStatus) || "CLOSED".equals(tradeStatus) || "REVOKED".equals(tradeStatus) || "PAYERROR".equals(tradeStatus) || num == 10){ @@ -1630,12 +2050,12 @@ // break; // } - if("WAIT_BUYER_PAY".equals(tradeStatus)){ + if ("WAIT_BUYER_PAY".equals(tradeStatus)) { num++; } } } - }catch (Exception e){ + } catch (Exception e) { mcClient.deletePaymentRecord(code); e.printStackTrace(); } @@ -1645,13 +2065,7 @@ return alipay; } - - - @Resource - private MerChandiseClient merChandiseClient; - - - public void moneyOut(String outNum,String tradeNo) throws AlipayApiException { + public void moneyOut(String outNum, String tradeNo) throws AlipayApiException { AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); @@ -1674,15 +2088,14 @@ " \"memo\":\"分账给测试商户\"," + " }" + " ]," + - " \"out_request_no\":\""+tradeNo+"\"" + + " \"out_request_no\":\"" + tradeNo + "\"" + "}"); AlipayTradeRoyaltyRelationBindResponse response = alipayClient.execute(request1); - if(response.isSuccess()){ + if (response.isSuccess()) { System.out.println("绑定调用成功"); } else { System.out.println("调用失败"); } - // RoyaltyDetailInfos royaltyDetailInfos1 = new RoyaltyDetailInfos(); @@ -1698,7 +2111,8 @@ List<UserPointsMerchandise> userPointsMerchandises = merChandiseClient.queryUserPointMerchaseByCode(outNum); // PaymentCompetition code = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("code", outNum)); - Integer storeId = userPointsMerchandises.get(0).getStoreId(); + if(userPointsMerchandises.size() > 0){ + Integer storeId = userPointsMerchandises.get(0).getStoreId(); // Competition byId1 = competitionService.getById(code.getCompetitionId()); @@ -1706,9 +2120,7 @@ // TCoursePackage byId = coursePackageService.getById(one.getCoursePackageId()); - - OperatorUser operatorUser = storeClient.queryByStoreId(storeId); - + OperatorUser operatorUser = storeClient.queryByStoreId(storeId); // Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo); @@ -1720,51 +2132,89 @@ // OperatorUser operatorUser = siteClient.queryOperator(stores); + OpenApiRoyaltyDetailInfoPojo op = new OpenApiRoyaltyDetailInfoPojo(); + op.setTransOutType("loginName"); + op.setTransOut("happysports@weparklife.com"); + op.setTransInType("userId"); + op.setTransIn(operatorUser.getAlipayNum()); + op.setAmountPercentage(Long.valueOf(operatorUser.getAlipayProportion())); + + List<OpenApiRoyaltyDetailInfoPojo> ops = new ArrayList<>(); + ops.add(op); + model.setRoyaltyParameters(ops); + + request.setBizModel(model); - OpenApiRoyaltyDetailInfoPojo op = new OpenApiRoyaltyDetailInfoPojo(); - op.setTransOutType("loginName"); - op.setTransOut("happysports@weparklife.com"); - op.setTransInType("userId"); - op.setTransIn(operatorUser.getAlipayNum()); - op.setAmountPercentage(Long.valueOf(operatorUser.getAlipayProportion())); - - List<OpenApiRoyaltyDetailInfoPojo> ops = new ArrayList<>(); - ops.add(op); - model.setRoyaltyParameters(ops); - - request.setBizModel(model); - - - AlipayTradeOrderSettleResponse response1 = alipayClient.execute(request); - if(response1.isSuccess()){ - System.out.println("调用成功"); - } else { - System.out.println("调用失败"); + AlipayTradeOrderSettleResponse response1 = alipayClient.execute(request); + if (response1.isSuccess()) { + System.out.println("调用成功"); + } else { + System.out.println("调用失败"); + } } + } - private ResultUtil WechatPayment(BigDecimal cash, String code) throws Exception { - ResultUtil weixinpay = payMoneyUtil.weixinpay("课包", "", code, cash.toString(), + private ResultUtil WechatPayment(Integer type, BigDecimal cash, String code,Integer id) throws Exception { + String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券"); + System.err.println("微信支付:"+name); + + PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(id); + System.err.println("查询积分商品"+pointsMerchandise); + // 分账表示 0否1是 + String temp = "0"; + switch (type){ + case 1: + temp = "0"; + break; + case 2: + // 判断课包属于平台还是运营商 + CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId()); + Store store = storeClient.queryStoreById(coursePackage.getStoreId()); + if (store.getOperatorId() ==null || store.getOperatorId() == 0){ + // 平台课包 不分账 + }else{ + temp = "1"; + } + break; + case 3: + List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); + if (!integers.isEmpty()){ + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){ + // 平台门票 不分账 + }else{ + temp = "1"; + } + } + // 查询门票指定的门店 属于平台还是运营商 + break; + } + System.err.println("支付"); + ResultUtil weixinpay = payMoneyUtil.weixinpay(name+"-"+temp, "", code, cash.toString(), "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); - if(weixinpay.getCode() == 200){ + System.err.println("提交支付"+weixinpay); + if (weixinpay.getCode() == 200) { new Thread(new Runnable() { @Override public void run() { try { int num = 1; int wait = 0; - while (num <= 10){ + while (num <= 10) { int min = 5000; wait += (min * num); Thread.sleep(wait); - List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); - if(userPointsMerchandises.get(0).getPayStatus() == 2){ + UserPointsMerchandise userPointsMerchandise = mcClient.queryUserPointMerchaseByCode(code).get(0); + if (userPointsMerchandise.getPayStatus() == 2) { + + break; } ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); - if(resultUtil.getCode() == 200 && userPointsMerchandises.get(0).getPayStatus() == 1){ + if (resultUtil.getCode() == 200 && userPointsMerchandise.getPayStatus() == 1) { /** * SUCCESS—支付成功, * REFUND—转入退款, @@ -1777,25 +2227,48 @@ 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){ + if ("REFUND".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); - userPointsMerchandise.setOrderNumber(transaction_id); - userPointsMerchandise.setPayType(1); - mcClient.updateDetailsUserPointMercase(userPointsMerchandise); + if ("SUCCESS".equals(s)) { + userPointsMerchandise.setPayStatus(2); + userPointsMerchandise.setPaymentTime(new Date()); + userPointsMerchandise.setOrderNumber(transaction_id); + userPointsMerchandise.setCashPayType(1); + mcClient.updateDetailsUserPointMercase(userPointsMerchandise); + + TAppUser tAppUser = baseMapper.selectById(userPointsMerchandise.getUserId()); + dealAppUserIntegral(userPointsMerchandise.getUserId(), tAppUser, userPointsMerchandise.getIntegral()); + + //课程 + if(type == 2){ + CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); + if(null != coursePackageOrder1){ + coursePackageOrder1.setPayStatus(2); + coursePackageOrder1.setOrderNumber(transaction_id); + coursePackageOrder1.setAppUserId(null); + paymentClient.updateCoursePackageOrder(coursePackageOrder1); + + GetCoursePackagePaymentConfig getCoursePackagePaymentConfig = new GetCoursePackagePaymentConfig(); + getCoursePackagePaymentConfig.setCoursePackageId(coursePackageOrder1.getCoursePackageId()); + getCoursePackagePaymentConfig.setClassHours(coursePackageOrder1.getClassHours()); + CoursePackagePaymentConfig coursePackagePaymentConfig = paymentClient.getCoursePackagePaymentConfig(getCoursePackagePaymentConfig); + + AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); + addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrder1.getId()); + addCoursePackageOrderStudent.setCoursePackagePaymentConfig(coursePackagePaymentConfig); + paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); + } } break; } - if("USERPAYING".equals(s)){ + if ("USERPAYING".equals(s) || "NOTPAY".equals(s)) { num++; } } } - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } @@ -1805,82 +2278,163 @@ } @Override - public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber,Integer payType) { - List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); - if (userPointsMerchandises.size() > 1){ - for (int i = 0; i < userPointsMerchandises.size(); i++) { - userPointsMerchandises.get(i).setOrderNumber(orderNumber+ "-" + (i+1)); - userPointsMerchandises.get(i).setPayType(payType); - userPointsMerchandises.get(i).setPayStatus(2); - mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(i)); + public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) { + System.err.println("进入回调"+code); + UserPointsMerchandise userPointsMerchandise = mcClient.queryUserPointMerchaseByCode(code).get(0); + System.err.println("商品"+userPointsMerchandise); + if (userPointsMerchandise.getPayStatus() == 2) { + return ResultUtil.success(); + } - Integer pointsMerchandiseId = userPointsMerchandises.get(i).getPointsMerchandiseId(); - PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); + userPointsMerchandise.setOrderNumber(orderNumber); + userPointsMerchandise.setPayStatus(2); + userPointsMerchandise.setPaymentTime(new Date()); + mcClient.updateDetailsUserPointMercase(userPointsMerchandise); + + TAppUser tAppUser = baseMapper.selectById(userPointsMerchandise.getUserId()); + dealAppUserIntegral(userPointsMerchandise.getUserId(), tAppUser, userPointsMerchandise.getIntegral()); + + Integer pointsMerchandiseId = userPointsMerchandise.getPointsMerchandiseId(); + PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); + if(pointsMerchandise.getType() == 2){ + //课程 + CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); + if(null != coursePackageOrder1){ + coursePackageOrder1.setPayStatus(2); + coursePackageOrder1.setOrderNumber(orderNumber); + coursePackageOrder1.setAppUserId(null); + paymentClient.updateCoursePackageOrder(coursePackageOrder1); + + GetCoursePackagePaymentConfig getCoursePackagePaymentConfig = new GetCoursePackagePaymentConfig(); + getCoursePackagePaymentConfig.setCoursePackageId(coursePackageOrder1.getCoursePackageId()); + getCoursePackagePaymentConfig.setClassHours(coursePackageOrder1.getClassHours()); + CoursePackagePaymentConfig coursePackagePaymentConfig = paymentClient.getCoursePackagePaymentConfig(getCoursePackagePaymentConfig); + + AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); + addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrder1.getId()); + addCoursePackageOrderStudent.setCoursePackagePaymentConfig(coursePackagePaymentConfig); + paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); + } + } + // 创建一个2分钟后执行的线程 + new Thread(() -> { + try { + // 休眠两分钟后再调用分账接口 避免提示订单正在处理中 + Thread.sleep(1000 * 60 * 2); + // 分账表示 0否1是 + String temp = "0"; + // 运营商id + Integer operatorId = 0; + System.err.println("商品"+pointsMerchandise); switch (pointsMerchandise.getType()){ + case 1: + temp = "0"; + break; case 2: - List<TCoursePackagePayment> coursePackagePaymentOfCode = paymentClient.getCoursePackagePaymentOfCode(code); - for (TCoursePackagePayment coursePackagePayment : coursePackagePaymentOfCode) { - coursePackagePayment.setPayStatus(2); - coursePackagePayment.setPayType(payType); - coursePackagePayment.setOrderNumber(orderNumber); - coursePackagePayment.setCashPayment(pointsMerchandise.getCash()); - paymentClient.updatePaymentCoursePackage(coursePackagePayment); + // 判断课包属于平台还是运营商 + CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId()); + Store store = storeClient.queryStoreById(coursePackage.getStoreId()); + if (store.getOperatorId() ==null || store.getOperatorId() == 0){ + // 平台课包 不分账 + }else{ + temp = "1"; + operatorId = store.getOperatorId(); } break; - case 4: - UserCoupon coupon = new UserCoupon(); - coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId()); - coupon.setUserId(userPointsMerchandises.get(0).getUserId()); - coupon.setStatus(1); - ucponClient.insertToAppuserCoupon(coupon); - break; - default: + case 3: + List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); + System.err.println("门店ids"+integers); + if (!integers.isEmpty()){ + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){ + // 平台门票 不分账 + }else{ + temp = "1"; + operatorId = store1.getOperatorId(); + } + } + // 查询门票指定的门店 属于平台还是运营商 break; } + System.err.println("运营商id"+operatorId); + if (operatorId != 0) { + //课程 + if(pointsMerchandise.getType() == 2){ + //课程 + CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); + if(null != coursePackageOrder1){ + coursePackageOrder1.setPayStatus(2); + coursePackageOrder1.setOrderNumber(orderNumber); + coursePackageOrder1.setAppUserId(null); + paymentClient.updateCoursePackageOrder(coursePackageOrder1); + + GetCoursePackagePaymentConfig getCoursePackagePaymentConfig = new GetCoursePackagePaymentConfig(); + getCoursePackagePaymentConfig.setCoursePackageId(coursePackageOrder1.getCoursePackageId()); + getCoursePackagePaymentConfig.setClassHours(coursePackageOrder1.getClassHours()); + CoursePackagePaymentConfig coursePackagePaymentConfig = paymentClient.getCoursePackagePaymentConfig(getCoursePackagePaymentConfig); + + AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); + addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrder1.getId()); + addCoursePackageOrderStudent.setCoursePackagePaymentConfig(coursePackagePaymentConfig); + paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); + // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 + String proportionByOperatorId = storeClient.getProportionByOperatorId(operatorId); + String[] split = proportionByOperatorId.split(","); + String s1 = split[0]; + if (!s1.equals("未设置")){ + BigDecimal bigDecimal = new BigDecimal(s1); + // 分账比例 + BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(operatorId); + + ResultUtil fenzhang = payMoneyUtil.fenzhang(orderNumber, coursePackageOrder1.getCashPayment().multiply(bigDecimal1), s2,"运动营商品"); + if (!fenzhang.getCode().equals(200)){ + System.err.println("分账失败 原因是:"+fenzhang.getMsg()); + } + } + } + }else{ + System.err.println("门票"); + // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 + String proportionByOperatorId = storeClient.getProportionByOperatorId(operatorId); + System.err.println("分账比例"+proportionByOperatorId); + String[] split = proportionByOperatorId.split(","); + String s1 = split[0]; + if (!s1.equals("未设置")){ + BigDecimal bigDecimal = new BigDecimal(s1); + // 分账比例 + BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(operatorId); + System.err.println("微信商户号"+s2); + + ResultUtil fenzhang = payMoneyUtil.fenzhang(orderNumber, pointsMerchandise.getCash().multiply(bigDecimal1), s2,"门票"); + if (!fenzhang.getCode().equals(200)){ + System.err.println("分账失败 原因是:"+fenzhang.getMsg()); + } + } + } + + } + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (Exception e) { + throw new RuntimeException(e); } - }else { - userPointsMerchandises.get(0).setOrderNumber(orderNumber); - userPointsMerchandises.get(0).setPayType(payType); - userPointsMerchandises.get(0).setPayStatus(2); - mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(0)); - - Integer pointsMerchandiseId = userPointsMerchandises.get(0).getPointsMerchandiseId(); - PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); - switch (pointsMerchandise.getType()){ - case 2: - List<TCoursePackagePayment> coursePackagePaymentOfCode = paymentClient.getCoursePackagePaymentOfCode(code); - - TCoursePackagePayment packagePayment =coursePackagePaymentOfCode.get(0); - packagePayment.setPayStatus(2); - packagePayment.setPayType(payType); - packagePayment.setOrderNumber(orderNumber); - packagePayment.setCashPayment(pointsMerchandise.getCash()); - paymentClient.updatePaymentCoursePackage(packagePayment); - break; - case 4: - UserCoupon coupon = new UserCoupon(); - coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId()); - coupon.setUserId(userPointsMerchandises.get(0).getUserId()); - coupon.setStatus(1); - ucponClient.insertToAppuserCoupon(coupon); - break; - default: - break; - } - - } + }).start(); return ResultUtil.success(); } @Override - public List<StoreResponse> queryStoresOfExchange(Integer goodsType,Integer pointsMerId) { + public List<StoreResponse> queryStoresOfExchange(Integer goodsType, Integer pointsMerId) { List<StoreResponse> responses = new ArrayList<>(); - if (goodsType == 4){ + if (goodsType == 4) { List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId); - if (couponStoreIds.size() > 0 ){ + if (couponStoreIds.size() > 0) { for (Integer couponStoreId : couponStoreIds) { StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId); - if(ToolUtil.isNotEmpty(courseOfStore)){ + if (ToolUtil.isNotEmpty(courseOfStore)) { StoreResponse response = new StoreResponse(); response.setStoreId(couponStoreId); response.setStoreName(courseOfStore.getStoreName()); @@ -1889,12 +2443,12 @@ } } - }else { + } else { List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId); - if (integers.size() > 0 ){ + if (integers.size() > 0) { for (Integer integer : integers) { StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer); - if(ToolUtil.isNotEmpty(courseOfStore)){ + if (ToolUtil.isNotEmpty(courseOfStore)) { StoreResponse response = new StoreResponse(); response.setStoreId(integer); response.setStoreName(courseOfStore.getStoreName()); @@ -1908,7 +2462,7 @@ @Override - public List<CourseVenue> queryWeekOfCourseDetails(Integer appUserId ,Integer stuId, String time,String longitude,String latitude) { + public List<CourseVenue> queryWeekOfCourseDetails(Integer appUserId, Integer stuId, String time, String longitude, String latitude) { List<CourseVenue> courseVenues = new ArrayList<>(); WeeksOfCourseRest weeksOfCourseRest = new WeeksOfCourseRest(); weeksOfCourseRest.setTime(time); @@ -1916,13 +2470,11 @@ weeksOfCourseRest.setAppUserId(appUserId); List<CourseOfStoreVo> storeOfCourses = paymentClient.getStoreOfCourses(weeksOfCourseRest); System.out.println(storeOfCourses); - if (storeOfCourses.size() > 0 ){ - courseVenues = dealDatas(storeOfCourses,longitude,latitude); + if (storeOfCourses.size() > 0) { + courseVenues = dealDatas(storeOfCourses, longitude, latitude); } return courseVenues; } - - } -- Gitblit v1.7.1