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); 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(); } 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") 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; } /** * 获取赛事报名记录 */ 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); /** * 获取赛事报名记录 */ 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()); 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"); 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(",")) { 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> 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()"/> 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){ 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); 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() 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==""){