44323
2023-11-01 febef797f9a8c98150275a6e0b721551c6ec383b
支付会员送券功能补充 运营商权限bug修改
14个文件已修改
180 ■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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==""){