From febef797f9a8c98150275a6e0b721551c6ec383b Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期三, 01 十一月 2023 17:13:59 +0800 Subject: [PATCH] 支付会员送券功能补充 运营商权限bug修改 --- cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java | 1 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js | 1 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java | 35 +++++++++++ cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java | 7 ++ cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js | 1 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java | 27 +++++++- cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html | 3 + cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java | 46 ++++++++++++++- cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java | 10 ++- cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java | 10 ++- cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html | 6 +- cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html | 2 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js | 7 +- cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 24 ++++++++ 14 files changed, 157 insertions(+), 23 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java index 9845e9c..d757b42 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java @@ -5,15 +5,17 @@ import com.dsh.account.model.dto.Coupon; import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import java.util.List; @FeignClient(value = "mb-cloud-activity") public interface UserConponClient { - + /** + * 查询注册赠送优惠券 判断当前优惠券限领数量 + */ + @PostMapping("/coupon/queryCouponByUser/{userId}") + public List<Integer> queryCouponByUser(@PathVariable("userId") Integer userId); @PostMapping("/base/userConpon/getStuOfConpons") public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId); diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java index acf9f66..5930248 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.VipPayment; +import com.dsh.account.feignclient.activity.UserConponClient; import com.dsh.account.mapper.VipPaymentMapper; import com.dsh.account.model.IncomeQuery; import com.dsh.account.service.IVipPaymentService; @@ -32,8 +33,6 @@ @Autowired private PayMoneyUtil payMoneyUtil; - - /** * 购买年度会员 @@ -112,7 +111,6 @@ vipPayment1.setPayTime(new Date()); vipPayment1.setOrderNumber(transaction_id); VipPaymentServiceImpl.this.updateById(vipPayment1); - TAppUser appUser = appUserService.getById(vipPayment1.getAppUserId()); Date vipEndTime = appUser.getVipEndTime(); if(null == vipEndTime){ @@ -233,6 +231,8 @@ + @Autowired + private UserConponClient userConponClient; /** * 购买年度会员支付回调处理 * @param code @@ -240,7 +240,7 @@ * @throws Exception */ @Override - public ResultUtil addVipPaymentCallback(String code, String orderNumber) throws Exception { + public synchronized ResultUtil addVipPaymentCallback(String code, String orderNumber) throws Exception { VipPayment vipPayment1 = VipPaymentServiceImpl.this.getOne(new QueryWrapper<VipPayment>().eq("code", code)); if(vipPayment1.getPayStatus() != 1){ return ResultUtil.success(); @@ -260,6 +260,8 @@ calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 1); appUser.setVipEndTime(calendar.getTime()); appUserService.updateById(appUser); + // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限 + userConponClient.queryCouponByUser(appUser.getId()); return ResultUtil.success(); } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java index 4a16c13..d9bac30 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java @@ -91,7 +91,42 @@ @Autowired private AppUserClient appUserClient; + /** + * 查询注册赠送优惠券 判断当前优惠券限领数量 + */ + @ResponseBody + @PostMapping("/coupon/queryCouponByUser/{userId}") + public List<Integer> queryCouponByUser(@PathVariable("userId") Integer userId){ + List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2) + .le("startTime", new Date()).ge("endTime", new Date()).eq("auditStatus", 2) + .eq("state", 1)); + for (Coupon coupon : list) { + // 发放数量 + Integer quantityIssued = coupon.getQuantityIssued(); + // 限领数量 + Integer pickUpQuantity = coupon.getPickUpQuantity(); + // 优惠券已领取数量 + int couponId = ucService.count(new QueryWrapper<UserCoupon>().eq("couponId", coupon.getId())); + // 用户已领取该优惠券数量 + int count = ucService.count(new QueryWrapper<UserCoupon>().eq("couponId", coupon.getId() + ).eq("userId", userId)); + if (couponId>=quantityIssued){ + continue; + } + if (count>=pickUpQuantity){ + continue; + } + // 条件满足 将优惠券送给用户 + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(coupon.getId()); + userCoupon.setUserId(userId); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + ucService.save(userCoupon); + } + return null; + } @ResponseBody @PostMapping("/api/coupon/queryCouponList") diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java index ff4b14f..06e7488 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java @@ -75,7 +75,31 @@ @Autowired private AppUserClient appUserClient; + /** + * 根据门店ids 获取对应的赛事 根据赛事支付记录获取用户ids + */ + @ResponseBody + @PostMapping("/base/competition/getUserIds") + public List<Integer> getUserIds(@RequestBody ListQuery query){ + List<Competition> list = cttService.list(new QueryWrapper<Competition>()); + // 赛事id集合 + List<Integer> comIds = new ArrayList<>(); + for (Integer id : query.getIds()) { + for (Competition competition : list) { + if (competition.getStoreId().contains(id.toString())){ + comIds.add(competition.getId()); + } + } + } + // 获取到赛事id集合 去重 + List<Integer> collect = comIds.stream().distinct().collect(Collectors.toList()); + // 根据赛事id 查询赛事支付记录 获取用户ids + List<Integer> competitionId = paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>() + .in("competitionId", collect)) + .stream().map(PaymentCompetition::getAppUserId).collect(Collectors.toList()); + return competitionId; + } /** * 获取赛事报名记录 */ diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java index 5e3b269..79b616d 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java @@ -15,6 +15,13 @@ @FeignClient("mb-cloud-competition") public interface CompetitionClient { + + + /** + * 根据门店ids 获取对应的赛事 根据赛事支付记录获取用户ids + */ + @PostMapping("/base/competition/getUserIds") + List<Integer> getUserIds(@RequestBody ListQuery query); /** * 获取赛事报名记录 */ diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java index d23cb31..f1a5b51 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dsh.course.feignClient.account.AppUserClient; import com.dsh.course.feignClient.account.CityManagerClient; import com.dsh.course.feignClient.account.StoreStaffClient; @@ -12,14 +13,16 @@ import com.dsh.course.feignClient.activity.model.BodySideAppointment; import com.dsh.course.feignClient.activity.model.QueryBodySideAppointment; import com.dsh.course.feignClient.activity.model.QueryBodySideAppointmentVO; +import com.dsh.course.feignClient.competition.CompetitionClient; +import com.dsh.course.feignClient.competition.model.Competition; +import com.dsh.course.feignClient.competition.model.ListQuery; +import com.dsh.course.feignClient.course.CoursePackageClient; import com.dsh.course.feignClient.other.StoreClient; import com.dsh.course.feignClient.other.model.SiteChangeStateVO; import com.dsh.guns.config.UserExt; import com.dsh.guns.modular.system.controller.util.MD5; import com.dsh.guns.modular.system.model.*; -import com.dsh.guns.modular.system.service.ICityService; -import com.dsh.guns.modular.system.service.IRoleService; -import com.dsh.guns.modular.system.service.IUserService; +import com.dsh.guns.modular.system.service.*; import com.dsh.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -61,6 +64,14 @@ private IRoleService roleService; @Autowired private StudentClient studentClient; + @Autowired + private IStoreService storeService; + @Autowired + private CompetitionClient competitionClient; + @Autowired + private ISiteBookingService siteBookingService; + @Autowired + private CoursePackageClient coursePackageClient; /** * 跳转体测预约管理首页 */ @@ -159,6 +170,9 @@ @ResponseBody public List<QueryAppUserVO> listAll(String province, String city,String name, String phone,Integer isVip, String salesmanUserName){ + Integer objectType = UserExt.getUser().getObjectType(); + Integer objectId = UserExt.getUser().getObjectId(); + QueryAppUser queryAppUser = new QueryAppUser(); queryAppUser.setProvince(province); queryAppUser.setCity(city); @@ -174,10 +188,34 @@ TCity c = cityService.getOne(new QueryWrapper<TCity>().eq("code", city)); queryAppUser.setCity(c.getName()); } - Integer objectType = UserExt.getUser().getObjectType(); queryAppUser.setInsertType(objectType); queryAppUser.setTypeId(UserExt.getUser().getObjectId()); List<QueryAppUserVO> queryAppUserVOS = appUserClient.listAll(queryAppUser); + // 根据赛事支付记录 + + if (objectType == 2){ + // 获取运营商下的所有门店id集合 + List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId)) + .stream().map(TStore::getId).collect(Collectors.toList()); + // 根据门店id集合查询 属于该运营商下的门店举办的赛事 + ListQuery listQuery = new ListQuery(); + listQuery.setIds(storeIds); + // 通过门店ids 获取赛事的支付记录 获取到用户的ids + List<Integer> list = competitionClient.getUserIds(listQuery); + // todo 写根据用户ids查询用户的方法 + + // 获取场地预约记录 拿到用户ids + List<Integer> storeId = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", storeIds)) + .stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + // 获取课程购买记录 + + // 获取游戏记录 + } + + + + + for (QueryAppUserVO queryAppUserVO : queryAppUserVOS) { if (queryAppUserVO.getSalesmanUserId()!=null){ User byId = userService.getById(queryAppUserVO.getSalesmanUserId()); diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java index 266e1e8..a572c82 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java @@ -237,6 +237,23 @@ User byId1 = userMapper.selectById(byId.getStoreStaffId()); model.addAttribute("city",byId1); model.addAttribute("type",1); + // 如果当前登陆人是运营商 + if (UserExt.getUser().getObjectType()==2){ + // 查询这个运营商管理的省 + TOperator id1 = tOperatorService.getOne(new QueryWrapper<TOperator>().eq("id", UserExt.getUser().getObjectId())); + if (id1.getType()==1){ + // 全国 + List<TCity> list3 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list",list3); + }else{ + // 找到他管理的省 + List<TOperatorCity> list4 = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", UserExt.getUser().getObjectId()).eq("pid", 0)); + model.addAttribute("list",list4); + } + }else{ + List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list",list5); + } return PREFIX + "TShop_edit.html"; } @RequestMapping("/tShop_update1/{id}") @@ -572,10 +589,10 @@ } }else { - TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getId, tStore.getProvinceCode())); + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, tStore.getProvinceCode())); tStore.setProvince(one.getName()); tStore.setProvinceCode(one.getCode()); - TCity one1 = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getId, tStore.getCityCode())); + TCity one1 = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, tStore.getCityCode())); tStore.setCity(one1.getName()); tStore.setCityCode(one1.getCode()); } @@ -598,10 +615,12 @@ userMapper.updateById(user); tStore.setLon(lon); tStore.setLat(lat); + // 运营商编辑 + if (UserExt.getUser().getObjectType()==2){ + tStore.setOperatorId(null); + } storeService.updateById(tStore); String ids1 = byIdc.getIds(); - - HashMap<String, String> mapx = new HashMap<>(); mapx.put("sign","0DB011836143EEE2C2E072967C9F4E4B"); diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java index f1ac631..2a18760 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java @@ -484,7 +484,6 @@ // 添加门禁 JSONObject jsonObject = JSONObject.parseObject(s); JSONObject data = jsonObject.getJSONObject("data"); - String spaceId = data.getString("space_id"); // Integer integer = Integer.valueOf(spaceId); if(StringUtils.hasLength( site.getIds())) { for (String s1 : site.getIds().split(",")) { diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html index 376c3f8..c0bc712 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html @@ -69,9 +69,9 @@ <div class="form-group" id="provinceCode"> <label class="col-sm-3 control-label">所在省:</label> <div class="col-sm-9"> - <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange2(this)"> + <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange9(this)"> @for(obj in list){ - <option value="${obj.id}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option> + <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option> @} </select> </div> @@ -81,7 +81,7 @@ <div class="col-sm-9"> <select class="form-control" id="cCode" name="cCode"> @for(obj in list1){ - <option value="${obj.id}" ${item.cityCode == obj.code ? 'selected=selected' : ''}>${obj.name}</option> + <option value="${obj.code}" ${item.cityCode == obj.code ? 'selected=selected' : ''}>${obj.name}</option> @} </select> </div> diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html index 4c1619a..dcb9589 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html @@ -193,12 +193,14 @@ </div> </div> <#input style="width: 300px" id="ids" name="*添加闸机:" placeholder="请输入闸机ID" type="text"/> + @if(objectType==1){ <div class="form-group" style=" margin-left: 17%;" > <label class="col-sm-1 control-label">场地说明:</label> <div class="col-sm-5"> <textarea type="text/plain" id="editor" style="height: 300px;width: 800px;"></textarea> </div> </div> + @} <div class="row btn-group-m-t"> <div class="col-sm-10 col-sm-offset-5" > <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSite.addSubmit()"/> diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html index bbee6db..b8c7926 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html @@ -47,6 +47,7 @@ <div class="form-horizontal" id="carInfoForm"> <input id="type_" value="${list.ishalf}" hidden> + <input id="objectType" value="${objectType}" hidden> @if(objectType == 1){ <div class="form-group" > @@ -230,12 +231,14 @@ <input class="form-control" id="ids" name="ids" value="${list.ids}" type="text" style="width: 300px" placeholder="请输入闸机ID"> </div> </div> + @if(objectType==1){ <div class="form-group" style="margin-left: 13%;display: inline-flex;margin-top: 16px;" > <label class="col-sm-2 control-label">场地说明:</label> <div class="col-sm-5" style="margin-left: -35px;"> <textarea type="text/plain" id="editor" style="height: 300px;width: 800px;">${list.introduce}</textarea> </div> </div> + @} <div class="row btn-group-m-t"> <div class="col-sm-10 col-sm-offset-5" > @if(type==1){ diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js index aa8e242..6ed0c0f 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js @@ -138,6 +138,7 @@ content += "<option value='"+v.code+"'>"+v.name+"</option>"; }); $("#cCode1").empty().append(content); + $("#cCode").empty().append(content); } }); ajax.set("province",oneId); diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js index 92ea952..e4172b0 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js @@ -439,6 +439,7 @@ halfName:"", introduce:"", imgs:"", + introduce:"", ids:"" }; data.province = $("#pCode").val() diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js index 510c926..f0cd5cd 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js @@ -352,11 +352,12 @@ } } - + var objectType =$("#objectType").val() data.halfName= halfName; data.ids= $("#ids").val(); - let introduce = TSiteInfo.editor.getContent(); - + if (objectType==1){ + introduce = TSiteInfo.editor.getContent(); + } console.log(introduce) if(introduce==""){ -- Gitblit v1.7.1