From 75bac456c3d66f6b173b1213776158c3bc5f8b96 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期日, 05 十一月 2023 09:45:24 +0800
Subject: [PATCH] 后台bug修改

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java  |  102 +++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html                                            |   11 
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                                          |   20 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TBodySideAppointmentsController.java |    6 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                               |   16 
 cloud-server-course/src/main/java/com/dsh/course/model/CancelClassesQuery.java                                         |    1 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js                                 |   15 
 cloud-server-course/src/main/java/com/dsh/course/entity/PacQueryDto.java                                               |    4 
 cloud-server-activity/src/main/resources/mapper/CouponMapper.xml                                                       |   12 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                           |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java                                  |   84 +++
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                           |   49 ++
 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/QueryAppUser.java                       |    3 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html                                       |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html                         |   35 +
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java                         |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppUserController.java              |   25 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java        |   11 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/TOperatorCity.java                        |   59 ++
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java                    |   23 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java                |   90 +++-
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html                                       |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java            |   49 ++
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                        |   29 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java              |   19 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/PacQueryDto.java                           |    5 
 cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java                            |   13 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java                 |    9 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js                              |  131 +++--
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java               |   34 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html                                        |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment.html                                   |   14 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html                               |   23 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java              |   13 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html                                   |    3 
 cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java                                   |    9 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CancelClassesQuery.java                        |    1 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js                                   |   90 ++--
 cloud-server-course/src/main/java/com/dsh/course/entity/dto/StudentQeryDto.java                                        |    2 
 cloud-server-account/src/main/java/com/dsh/account/model/query/appUserQuery/QueryAppUser.java                          |    3 
 cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js                        |   42 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html                      |    1 
 cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js                                      |    8 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java             |    1 
 cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java                                          |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/OperatorClient.java                             |   21 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js                      |   18 
 cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCoupon.js                                       |   13 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js                                            |   11 
 cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml                                               |   11 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java                |    3 
 cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml                                                      |   32 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java          |   60 ++
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                               |    5 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCoupon.html                                       |    2 
 cloud-server-management/src/main/java/com/dsh/course/dto/StudentQeryDto.java                                           |    2 
 cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java                                       |    4 
 cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java                                        |    9 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java                       |    9 
 59 files changed, 976 insertions(+), 303 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
index 81fbf7b..c7c5ef7 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -30,6 +30,7 @@
 import java.io.PrintWriter;
 import java.util.*;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author zhibing.pu
@@ -116,8 +117,12 @@
     @ResponseBody
     @RequestMapping("/base/appUser/listAll")
     public List<QueryAppUserVO> listAll(@RequestBody QueryAppUser query){
-
-        return appUserService.listAll(query);
+        List<QueryAppUserVO> queryAppUserVOS = appUserService.listAll(query);
+        if (query.getUserIds()!=null && query.getUserIds().size()!=0){
+            List<QueryAppUserVO> queryAppUserVOS1 = appUserService.listAll1(query);
+            queryAppUserVOS.addAll(queryAppUserVOS1);
+        }
+        return queryAppUserVOS.stream().distinct().collect(Collectors.toList());
     }
 
     /**
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
index 46c9d97..42bb3ba 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
@@ -56,4 +56,6 @@
     List<DayData> getDayUserCount(@Param("dto")UserInfoQueryDTO dto);
 
     List<GroupCityInfoVO> groupCityInfo(@Param("dto")UserInfoQueryDTO dto);
+
+    List<QueryAppUserVO> listAll1(@Param("query") QueryAppUser query);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/query/appUserQuery/QueryAppUser.java b/cloud-server-account/src/main/java/com/dsh/account/model/query/appUserQuery/QueryAppUser.java
index d05b6dc..3e9d90c 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/query/appUserQuery/QueryAppUser.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/query/appUserQuery/QueryAppUser.java
@@ -2,6 +2,8 @@
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 用户信息查询Query
  */
@@ -18,4 +20,5 @@
    private Integer insertType;
    // 平台/运营商/门店id
    private Integer typeId;
+   private List<Integer> userIds;
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
index 422e59e..bd36c07 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -180,12 +180,5 @@
     ResultUtil<String> updateInfo(UpdateInfoDto dto,Integer uid);
 
 
-
-
-
-
-
-
-
-
+    List<QueryAppUserVO> listAll1(QueryAppUser query);
 }
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 8f43a50..54627f6 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
@@ -1142,6 +1142,11 @@
     }
 
     @Override
+    public List<QueryAppUserVO> listAll1(QueryAppUser query) {
+        return appUserMapper.listAll1(query);
+    }
+
+    @Override
     public StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis,Integer pointsMerId, String lat, String lon,Integer isCourse) {
         StuAndStoreResponse response = new StuAndStoreResponse();
         if (isCourse == 1){
diff --git a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
index 456e177..0dfafd5 100644
--- a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
+++ b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
@@ -77,6 +77,8 @@
             </if>
             and t1.state != 3
         </where>
+
+
     </select>
     <select id="getSelects" resultType="com.dsh.account.dto.SelectDto">
         SELECT ts.id ,ts.`name` as value
@@ -279,4 +281,34 @@
         </where>
         GROUP BY cityCode
     </select>
+    <select id="listAll1" resultType="com.dsh.account.model.vo.QueryAppUserVO">
+        select t2.* from t_app_user t2
+        <where>
+            <if test="query.userIds != null and query.userIds.size()>0">
+                AND t2.id IN
+                <foreach collection="query.userIds" separator="," item="id" open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+            <if test="query.city!=null and query.city!= ''">
+                and t2.city = #{query.city}
+            </if>
+            <if test="query.province!=null and query.province!= ''">
+                and t2.province = #{query.province}
+            </if>
+            <if test="query.name!=null and query.name!= ''">
+                AND t2.name LIKE concat('%',#{query.name},'%')
+            </if>
+            <if test="query.phone!=null and query.phone!= ''">
+                and t2.phone LIKE concat('%',#{query.phone},'%')
+            </if>
+            <if test="query.isVip!=null and query.isVip!= ''">
+                and t2.isVip = #{query.isVip}
+            </if>
+            <if test="query.salesmanUser!=null and query.salesmanUser!= ''">
+                and t2.salesmanUserId = #{query.salesmanUser}
+            </if>
+            and t2.state != 3
+        </where>
+    </select>
 </mapper>
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 d9bac30..f531216 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
@@ -16,10 +16,12 @@
 import com.dsh.activity.feignclient.account.model.TStoreStaff;
 import com.dsh.activity.feignclient.model.CouponExamineListSearch;
 import com.dsh.activity.feignclient.model.CouponListOfSearch;
+import com.dsh.activity.feignclient.other.OperatorClient;
 import com.dsh.activity.feignclient.other.RegionClient;
 import com.dsh.activity.feignclient.other.StoreClient;
 import com.dsh.activity.feignclient.other.model.CityDataAndProvinceDataVo;
 import com.dsh.activity.feignclient.other.model.Store;
+import com.dsh.activity.feignclient.other.model.TOperatorCity;
 import com.dsh.activity.model.CouponListVo;
 import com.dsh.activity.model.CouponRecordQuery;
 import com.dsh.activity.model.request.CommodityRequest;
@@ -38,6 +40,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -259,27 +262,80 @@
     }
 
 
-
+    @Autowired
+    private OperatorClient operatorClient;
     @ResponseBody
     @PostMapping("/base/coupon/queryCouponListSearch")
     public List<Map<String,Object>> getCouponListOfSearch(@RequestBody CouponListOfSearch ofSearch){
         List<Map<String, Object>> mapList1 = couponService.queryCouponListOfSearch(ofSearch);
         List<Map<String, Object>> mapList = new ArrayList<>();
-
-        if(ofSearch.getStoreId()!=null){
+        if (ofSearch.getStoreIds()==null){
+            ArrayList<Integer> list = new ArrayList<>();
+            ofSearch.setStoreIds(list);
+        }
+        if(ofSearch.getStoreId()!=null || ofSearch.getStoreIds().size()!=0){
             for (Map<String, Object> map : mapList1) {
-                List<CouponStore> id = couStoreService.list(new LambdaQueryWrapper<CouponStore>().eq(CouponStore::getCouponId, map.get("id").toString()));
-                List<Integer> collect = id.stream().map(CouponStore::getStoreId).collect(Collectors.toList());
-                if(collect.size()==0){
-                    collect.add(-1);
-                }
-                if(collect.contains(ofSearch.getStoreId())){
-                    if(collect.size()>1){
-                        map.put("size",1);
-                    }else {
-                        map.put("size",0);
+                // 如果当前登陆人是运营商 只能查看平台添加的优惠券应只展示使用范围为全国通用、
+                // 指定城市有运营商管辖的、指定门店有运营商旗下门店
+                if (ofSearch.getObjType()== 2){
+                    if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 1){
+                        mapList.add(map);
                     }
-                    mapList.add(map);
+                    if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 2){
+                        // 获取到优惠券id 查询这个优惠券指定了哪些城市
+                        Integer id = Integer.parseInt(String.valueOf(map.get("id")));
+                        // 获取到运营商管理的省和市
+                        List<TOperatorCity> cityByOperatorId = operatorClient.getCityByOperatorId(ofSearch.getOperatorId());
+                        // 拿到运营商市的code集合
+                        List<String> collect = cityByOperatorId.stream().filter(t -> t.getPid() != 0)
+                                .map(tOperatorCity -> Integer.toString(tOperatorCity.getCode()))
+                                .collect(Collectors.toList());
+                        List<CouponCity> couponId = cityService.list(new QueryWrapper<CouponCity>().eq("couponId", id));
+                        // 先判断优惠券管理的市  运营商是否有
+                        List<String> collect1 = couponId.stream().map(CouponCity::getCityCode)
+                                .collect(Collectors.toList());
+                        // 优惠券指定的省
+                        List<String> collect2 = couponId.stream().map(CouponCity::getCityCode)
+                                .collect(Collectors.toList());
+                        if (!Collections.disjoint(collect, collect1)){
+                            mapList.add(map);
+                        }else{
+                            // 如果没有交集 那么还需要判断运营商是否管理了整个省
+
+
+                        }
+                    }
+                    if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 3){
+                        // 获取到优惠券id 查询这个优惠券指定了哪些门店
+                        Integer id = Integer.parseInt(String.valueOf(map.get("id")));
+                        // 当前运营商管理的门店ids
+                        List<Integer> storeIds = ofSearch.getStoreIds();
+                        // 优惠券指定的门店
+                        List<Integer> collect = couStoreService.list(new QueryWrapper<CouponStore>().eq("couponId",id)
+                                .in("storeId", storeIds)).stream().map(CouponStore::getStoreId)
+                                .collect(Collectors.toList());
+                        // 判断两个集合是否相交
+                        // 比较两个集合中是否有相同的元素;当两个集合中没有相同元素时返回true,
+                        // 当有相同元素时返回false。
+                        if (!Collections.disjoint(collect, storeIds)){
+                            mapList.add(map);
+                        }
+                    }
+                }else{
+                    List<CouponStore> id = couStoreService.list(new LambdaQueryWrapper<CouponStore>()
+                            .eq(CouponStore::getCouponId, map.get("id").toString()));
+                    List<Integer> collect = id.stream().map(CouponStore::getStoreId).collect(Collectors.toList());
+                    if(collect.size()==0){
+                        collect.add(-1);
+                    }
+                    if(collect.contains(ofSearch.getStoreId())){
+                        if(collect.size()>1){
+                            map.put("size",1);
+                        }else {
+                            map.put("size",0);
+                        }
+                        mapList.add(map);
+                    }
                 }
             }
         }else {
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index e374344..bc73622 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -9,9 +9,11 @@
 import com.dsh.activity.feignclient.course.model.CoursePackage;
 import com.dsh.activity.feignclient.course.model.CoursePackagePaymentConfig;
 import com.dsh.activity.feignclient.model.*;
+import com.dsh.activity.feignclient.other.OperatorClient;
 import com.dsh.activity.feignclient.other.StoreClient;
 import com.dsh.activity.feignclient.other.model.Store;
 import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse;
+import com.dsh.activity.feignclient.other.model.TOperatorCity;
 import com.dsh.activity.model.CoachChangeStateVO;
 import com.dsh.activity.model.PointMerchandiseIncomeVo;
 import com.dsh.activity.model.PointMerchandiseVo;
@@ -116,6 +118,10 @@
         byId.setVerificationUserId(dto.getVerificationUserId());
         return userPointsMerchandiseService.updateById(byId);
     }
+    @Autowired
+    private OperatorClient operatorClient;
+    @Resource
+    private CouponCityService cityService;
     @ResponseBody
     @PostMapping("/base/pointMerchars/ticketList")
     public List<Map<String,Object>> ticketList(@RequestBody IntegralGoodsOfSearch ofSearch){
@@ -155,6 +161,49 @@
                     }
                     result.add(map);
                 }
+                if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 1){
+                    result.add(map);
+                }
+                if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 2){
+                    // 获取到优惠券id 查询这个优惠券指定了哪些城市
+                    Integer id1 = Integer.parseInt(String.valueOf(map.get("id")));
+                    // 获取到运营商管理的省和市
+                    List<TOperatorCity> cityByOperatorId = operatorClient.getCityByOperatorId(ofSearch.getObjId());
+                    // 拿到运营商市的code集合
+                    List<String> collect1 = cityByOperatorId.stream().filter(t -> t.getPid() != 0)
+                            .map(tOperatorCity -> Integer.toString(tOperatorCity.getCode()))
+                            .collect(Collectors.toList());
+                    List<CouponCity> couponId = cityService.list(new QueryWrapper<CouponCity>().eq("couponId", id1));
+                    // 先判断优惠券管理的市  运营商是否有
+                    List<String> collect3 = couponId.stream().map(CouponCity::getCityCode)
+                            .collect(Collectors.toList());
+                    // 优惠券指定的省
+                    List<String> collect4 = couponId.stream().map(CouponCity::getCityCode)
+                            .collect(Collectors.toList());
+                    if (!Collections.disjoint(collect3, collect4)){
+                        result.add(map);
+                    }else{
+                        // 如果没有交集 那么还需要判断运营商是否管理了整个省
+
+
+                    }
+                }
+                if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 3){
+                    // 获取到优惠券id 查询这个优惠券指定了哪些门店
+                    Integer id3 = Integer.parseInt(String.valueOf(map.get("id")));
+                    // 当前运营商管理的门店ids
+                    List<Integer> storeIds = ofSearch.getStoreIds();
+                    // 优惠券指定的门店
+                    List<Integer> collect5 = cstoreService.list(new QueryWrapper<CouponStore>().eq("couponId",id3)
+                            .in("storeId", storeIds)).stream().map(CouponStore::getStoreId)
+                            .collect(Collectors.toList());
+                    // 判断两个集合是否相交
+                    // 比较两个集合中是否有相同的元素;当两个集合中没有相同元素时返回true,
+                    // 当有相同元素时返回false。
+                    if (!Collections.disjoint(collect5, storeIds)){
+                        result.add(map);
+                    }
+                }
             }
         } else {
             result=result1;
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java
index cf201b0..48a53d0 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.Data;
 
+import java.util.List;
 import java.util.Map;
 
 @Data
@@ -25,7 +26,6 @@
     private String cityCode;
     private Integer storeId;
     private Integer operatorId;
-
-
     private Integer objType;
+    private List<Integer> storeIds;
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/OperatorClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/OperatorClient.java
new file mode 100644
index 0000000..c7b98bc
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/OperatorClient.java
@@ -0,0 +1,21 @@
+package com.dsh.activity.feignclient.other;
+
+import com.dsh.activity.feignclient.other.model.Store;
+import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse;
+import com.dsh.activity.feignclient.other.model.TOperatorCity;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-other")
+public interface OperatorClient {
+
+    /**
+     * 根据运营商ID 获取运营商管理的省市
+     */
+    @RequestMapping(value = "/getCityByOperatorId")
+    List<TOperatorCity> getCityByOperatorId(@RequestBody Integer operatorId);
+
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/TOperatorCity.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/TOperatorCity.java
new file mode 100644
index 0000000..5703d3a
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/TOperatorCity.java
@@ -0,0 +1,59 @@
+package com.dsh.activity.feignclient.other.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 运营商
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_operator_city")
+public class TOperatorCity extends Model<TOperatorCity> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * code
+     */
+    private Integer code;
+
+    /**
+     * 1 省 2市
+     */
+    private Integer type;
+
+    private Integer pid;
+
+    @TableField("operatorId")
+    private Integer operatorId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
index 5b1f523..d647490 100644
--- a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
@@ -29,18 +29,14 @@
         `status`,
         state,
         illustrate,
-        auditStatus
+        auditStatus,
+        publisherType
         from t_coupon
         where 1=1
-        <if test="objType == 1">
-          and  auditStatus =2
-        </if>
-        <if test="operatorId != null">
+        <if test="objType == 3">
             and cityManagerId = #{operatorId}
         </if>
-        <if test="objType == 1">
-          and  auditStatus =2
-        </if>
+
         <if test="cityCode != null">
            and id in(
             SELECT DISTINCT couponId FROM
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 4d66956..30d37a5 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
@@ -594,15 +594,14 @@
                 wrapper.like(Competition::getName,listQuery.getEventName());
             }
             if(ToolUtil.isNotEmpty(listQuery.getTime())){
-                wrapper.gt(Competition::getStartTime,listQuery.getTime().split(" - ")[0]+" 00:00:00");
-                wrapper.lt(Competition::getEndTime,listQuery.getTime().split(" - ")[1]+" 23:59:59");
+                wrapper.lt(Competition::getStartTime,listQuery.getTime().split(" - ")[0]+" 00:00:00");
+                wrapper.gt(Competition::getEndTime,listQuery.getTime().split(" - ")[1]+" 23:59:59");
             }
-            if(ToolUtil.isNotEmpty(listQuery.getState())){
-                wrapper.eq(Competition::getStatus,listQuery.getState());
-            }
+
             if(ToolUtil.isNotEmpty(listQuery.getRegisterCondition())){
                 wrapper.eq(Competition::getRegisterCondition,listQuery.getRegisterCondition());
             }
+
             wrapper.in(Competition::getStoreId,listQuery.getIds());
             wrapper.eq(Competition::getAuditStatus,2);
             wrapper.orderByDesc(Competition::getInsertTime);
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
index 17c7e01..e8bae42 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
@@ -92,10 +92,21 @@
                 collect.add(-1);
             }
         }
-
+        if(query.getStoreIds()!=null && query.getStoreIds().size()!=0){
+            List<TCoursePackage> list = coursePackageService
+                    .list(new LambdaQueryWrapper<TCoursePackage>()
+                            .in(TCoursePackage::getStoreId, query.getStoreIds()));
+            collect = list.stream().map(TCoursePackage::getId).collect(Collectors.toList());
+            if(collect.size()==0){
+                collect.add(-1);
+            }
+        }
         List<CancelClassesVO> result = cancelledClassesService.listAll(query,collect);
         for (CancelClassesVO cancelClassesVO : result) {
             CoursePackageScheduling byId1 = coursePackageSchedulingService.getById(cancelClassesVO.getCoursePackageSchedulingId());
+            if (byId1==null){
+                continue;
+            }
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String string = format.format(byId1.getClassDate());
             String string1 = format.format(byId1.getEndDate());
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
index d2f042b..9761b5d 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -333,7 +333,8 @@
                     re.setBuyTypeName("手动支付"+"-"+re.getBuyTypeName());
                 }
             }
-
+            BigDecimal subtract = re.getOriginalPrice().subtract(re.getCashPayment());
+            re.setDiscountAmount(subtract);
             // 如果支付用户类型为管理员 则购买方式则为1线下购买
             if (re.getPayUserType()!=null){
                 if (re.getPayUserType()== 2){
@@ -379,21 +380,22 @@
         }
         List<RegisterOrderVO> res = packagePaymentService.listAllRegister(query);
         // 该运营商下没有门店
-        if (query.getStoresIds()!=null){
-            if (query.getStoresIds().size()==0){
+        if (query.getInsertType() == 2){
+            if (query.getStoresIds()!=null){
+                if (query.getStoresIds().size()==0){
+                    List<RegisterOrderVO> registerOrderVOS = new ArrayList<>();
+                    return registerOrderVOS;
+                }
+            }else{
                 List<RegisterOrderVO> registerOrderVOS = new ArrayList<>();
                 return registerOrderVOS;
             }
-        }else{
-            List<RegisterOrderVO> registerOrderVOS = new ArrayList<>();
-            return registerOrderVOS;
         }
 
         List<RegisterOrderVO> result = new ArrayList<>();
         Iterator<RegisterOrderVO> iterator = res.iterator();
         while (iterator.hasNext()) {
             RegisterOrderVO re = iterator.next();
-
             if (re.getSalesName() == null) {
                 re.setSalesName("无");
             }
@@ -404,18 +406,17 @@
                     re.setPayMoneyAndType("¥" + re.getMoney());
                 }
             }
-            Store store = storeClient.queryStoreById(re.getStoreId());
+            if (re.getStoreId()!=null){
+                Store store = storeClient.queryStoreById(re.getStoreId());
+                if (store!=null){
+                    re.setStoreName(store.getName());
+                }
+            }
             TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId());
             Student student = studentClient.queryStudentById(re.getStudentId());
             re.setPayStudent(student.getName());
             re.setPayUser(appUser.getName());
             re.setPhone(appUser.getPhone());
-            re.setStoreName(store.getName());
-            // 在这里添加条件来删除不满足要求的元素
-
-            if (query.getInsertType() !=null && appUser.getInsertType() != query.getInsertType()) {
-                iterator.remove(); // 使用迭代器的 remove 方法删除元素
-            }
         }
         return res;
     }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
index ae124df..b277725 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -42,7 +42,8 @@
     TCoursePackagePaymentService paymentService;
     @Autowired
     private CourseCounsumService counsumService;
-
+    @Autowired
+    private TCoursePackageService coursePackageService;
     //获取退费记录
     @RequestMapping("/getRefund")
     @ResponseBody
@@ -73,13 +74,16 @@
     @RequestMapping("/bypac")
     @ResponseBody
     public List<Map<String, Object>> bypac(@RequestBody PacQueryDto pacQueryDto) {
-
-
-
-
-
         System.out.println("-====studentQeryDto========="+pacQueryDto);
+        if (pacQueryDto.getStoreIds()!=null && pacQueryDto.getStoreIds().size()!=0){
+            // 根据门店id 查询课包ids
+            List<Integer> coursePackageIds = coursePackageService.list(new QueryWrapper<TCoursePackage>()
+                    .in("storeId", pacQueryDto.getStoreIds())).stream()
+                    .map(TCoursePackage::getId).collect(Collectors.toList());
+            pacQueryDto.setStoreIds(coursePackageIds);
+        }
         List<Map<String, Object>>  pays =  paymentService.bypac(pacQueryDto);
+
         System.out.println("=========pays======"+pays);
 
         return  pays;
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/PacQueryDto.java b/cloud-server-course/src/main/java/com/dsh/course/entity/PacQueryDto.java
index bb1929d..e3cce53 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/PacQueryDto.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/PacQueryDto.java
@@ -3,6 +3,8 @@
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class PacQueryDto {
     String cityCode;
@@ -12,5 +14,5 @@
     String start;
     String end;
     String provinceCode;
-
+    List<Integer> storeIds;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/dto/StudentQeryDto.java b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/StudentQeryDto.java
index b22d696..70225fa 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/dto/StudentQeryDto.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/StudentQeryDto.java
@@ -3,6 +3,7 @@
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class StudentQeryDto {
@@ -11,4 +12,5 @@
     String end;
     String studentName;
     String times;
+    List<Integer> coursePackageIds;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CancelClassesQuery.java b/cloud-server-course/src/main/java/com/dsh/course/model/CancelClassesQuery.java
index a051cfc..babfbee 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CancelClassesQuery.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CancelClassesQuery.java
@@ -23,4 +23,5 @@
     private List<Integer> studentIds;
 
     private Integer storeId;
+    private List<Integer> storeIds;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
index 8c2ca47..1369c02 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -163,15 +163,6 @@
         List<Map<String, Object>> studentTotal = this.baseMapper.getStudentTotal(studentQeryDto);
 
         for (Map<String, Object> student : studentTotal) {
-            BigDecimal cashPayment = (BigDecimal) student.get("cashPayment");
-            BigDecimal totalClassHours = (BigDecimal) student.get("totalClassHours");
-            BigDecimal hasHours = (BigDecimal) student.get("hasHours");
-
-            BigDecimal hasPayment = cashPayment.divide(totalClassHours, 2, RoundingMode.HALF_UP)
-                    .multiply(hasHours).setScale(2, RoundingMode.HALF_UP);
-            student.put("hasPayment", hasPayment);
-
-
             Integer appUserId = (Integer) student.get("appUserId");
             AppUser appUser = appuClient.queryAppUser(appUserId);
             student.put("province", appUser.getProvince());
@@ -182,8 +173,18 @@
 
             Student studentId = studentClient.queryStudentById((Integer) student.get("studentId"));
             student.put("studentName", studentId.getName());
-
-
+            BigDecimal cashPayment = (BigDecimal) student.get("cashPayment");
+            BigDecimal totalClassHours = (BigDecimal) student.get("totalClassHours");
+            BigDecimal hasHours = (BigDecimal) student.get("hasHours");
+            if (cashPayment==null){
+                continue;
+            }
+            if (totalClassHours.compareTo(BigDecimal.ZERO)==0){
+                totalClassHours = totalClassHours.add(new BigDecimal("1"));
+            }
+            BigDecimal hasPayment = cashPayment.divide(totalClassHours, 2, RoundingMode.HALF_UP)
+                    .multiply(hasHours).setScale(2, RoundingMode.HALF_UP);
+            student.put("hasPayment", hasPayment);
         }
 
         if (studentQeryDto.getCityCode()!=null&&studentQeryDto.getCityCode()!="") {
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
index 1e9f9bb..80c060c 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1360,7 +1360,7 @@
     @Override
     public Integer addCoursePackage(TCoursePackage coursePackage) {
         try {
-            coursePackage.setAuditStatus(2);
+
             this.baseMapper.insert(coursePackage);
 
             if (coursePackage.getClassStartTime()!=null&&coursePackage.getClassStartTime()!="") {
diff --git a/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
index bf4e3b7..4126cec 100644
--- a/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
@@ -8,11 +8,11 @@
         t2.name,
         CONCAT(t2.province, t2.city) AS provinceAndCity,
         t2.storeId,t2.coachId,
-        t2.name as courseName,t2.coachId,t3.studentId
+        t2.name as courseName,t2.coachId
         FROM
         t_cancelled_classes t1
         LEFT JOIN t_course_package t2 ON t1.coursePackageId = t2.id
-        inner join t_course_package_payment t3 on t1.coursePackagePaymentId = t3.id
+
         <where>
             <if test="query.courseName!=null and query.courseName!= ''">
                 and t2.name = #{query.courseName}
@@ -20,12 +20,7 @@
             <if test="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''">
                 and t1.insertTime between #{sTime} and #{eTime}
             </if>
-            <if test="query.studentIds != null and query.studentIds.size()>0">
-                AND t3.studentId IN
-                <foreach collection="query.studentIds" separator="," item="id" open="(" close=")">
-                    #{id}
-                </foreach>
-            </if>
+
             <if test="query.coachIds != null and query.coachIds.size()>0">
                 AND t2.coachId IN
                 <foreach collection="query.coachIds" separator="," item="id" open="(" close=")">
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index 0daff8f..28720c4 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -134,16 +134,17 @@
 
     </select>
     <select id="getStudentTotal" resultType="map">
-
         SELECT * from(
                          SELECT studentId, totalClassHours, name as courseName, laveClassHours,cashPayment as cashPayment,hasHours,appUserId,insertTime
+                         ,coursePackageId
                          FROM (
                                   SELECT studentId, totalClassHours, name, laveClassHours,cashPayment, (totalClassHours - laveClassHours) AS hasHours,py.appUserId,py.insertTime
+                                    ,coursePackageId
                                   FROM t_course_package_payment py
                                            LEFT JOIN t_course_package cp ON py.coursePackageId = cp.id
                                   UNION ALL
                                   SELECT studentId, SUM(totalClassHours) AS totalClassHours,'总计' as name, SUM(laveClassHours) AS laveClassHours, SUM(cashPayment) AS cashPayment,
-                                         (SUM(totalClassHours) - SUM(laveClassHours)) AS hasHours,py.appUserId,py.insertTime
+                                         (SUM(totalClassHours) - SUM(laveClassHours)) AS hasHours,py.appUserId,py.insertTime,py.coursePackageId
                                   FROM t_course_package_payment py
                                            LEFT JOIN t_course_package cp ON py.coursePackageId = cp.id
                                   GROUP BY studentId
@@ -154,7 +155,12 @@
             <if test="null != start and '' != start and null != end and '' != end">
                   a.insertTime between #{start} and #{end}
             </if>
-
+            <if test="coursePackageIds != null and coursePackageIds.size()>0">
+                AND a.coursePackageId IN
+                <foreach collection="coursePackageIds" separator="," item="id" open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
         </where>
 
     </select>
@@ -173,9 +179,13 @@
         FROM
             t_course_package_payment py
                 LEFT JOIN t_course_package cp ON py.coursePackageId = cp.id
-
-
         <where>
+            <if test="storeIds != null and storeIds.size()>0">
+                AND cp.id IN
+                <foreach collection="storeIds" separator="," item="id" open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
             <if test="null != start and '' != start and null != end and '' != end">
                 py.insertTime between #{start} and #{end}
             </if>
diff --git a/cloud-server-management/src/main/java/com/dsh/course/dto/StudentQeryDto.java b/cloud-server-management/src/main/java/com/dsh/course/dto/StudentQeryDto.java
index 3f3e37e..9a8bbfe 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/dto/StudentQeryDto.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/dto/StudentQeryDto.java
@@ -3,6 +3,7 @@
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class StudentQeryDto {
@@ -11,4 +12,5 @@
     String end;
     String studentName;
     String times;
+    List<Integer> coursePackageIds;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/QueryAppUser.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/QueryAppUser.java
index 4e22306..93f9301 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/QueryAppUser.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/QueryAppUser.java
@@ -2,6 +2,8 @@
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 用户信息查询Query
  */
@@ -18,4 +20,5 @@
    private Integer insertType;
    // 平台/运营商/门店id
    private Integer typeId;
+   private List<Integer> userIds;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java
index eb63ef4..ab56486 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.Data;
 
+import java.util.List;
 import java.util.Map;
 
 @Data
@@ -26,6 +27,6 @@
     private Integer storeId;
     private Integer operatorId;
     private Integer objType;
-
+    private List<Integer> storeIds;
 
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
index fbd60e7..6ec1b96 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
@@ -114,9 +114,7 @@
         // 获取课包id
         Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
         List<TCoursePackageDiscount> list = coursePackageDiscountClient.queryByCoursePackageId(coursePackageId);
-        // 获取当前课包价格配置
-        Integer coursePackageId1 = tCoursePackagePayment.getCoursePackageId();
-        TCoursePackage tCoursePackage = coursePackageClient.queryById(coursePackageId1);
+
         Date currentDate = new Date();
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(currentDate);
@@ -129,8 +127,37 @@
         // 判断当前用户是不是会员
         Integer appUserId = tCoursePackagePayment.getAppUserId();
         Date vipEndTime = appUserClient.queryAppUser1(appUserId).getVipEndTime();
+        // 会员折扣
+        double c1 = 0.00;
+        // 续课优惠
+        double c2 = 0.00;
+        // 显示折扣
+        double c3 = 0.00;
         for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
-            JSONObject jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent());
+            char c = tCoursePackageDiscount.getContent().charAt(0);
+            String value1 = String.valueOf(c);
+            JSONObject jsonObject ;
+            if (value1.equals("[")){
+                jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent()
+                        .substring(1,tCoursePackageDiscount.getContent().length() - 1));
+            }else{
+                jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent());
+            }
+            // 获取当前课包价格配置
+            Integer coursePackageId1 = tCoursePackagePayment.getCoursePackageId();
+            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(coursePackageId1);
+            if (coursePackagePaymentConfigs.size()!=0){
+                CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigs.get(0);
+                tCoursePackagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
+                tCoursePackagePayment.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin());
+
+            }
+            // 原价
+            Double originalPrice = tCoursePackagePayment.getOriginalPrice();
+
+            BigDecimal d1 = new BigDecimal(Double.toString(originalPrice));
+
+            // 计算课包折扣
             switch (tCoursePackageDiscount.getType()){
                 case 1:
                     // 是会员
@@ -140,8 +167,9 @@
                         Double aDouble = new Double(discountMember);
                         if (aDouble!=null){
                             String value = String.valueOf(discountMember);
-                            BigDecimal bigDecimal = new BigDecimal(value);
-                            tCoursePackagePayment.setCashPayment(bigDecimal);
+                            // 折扣比例
+                            Double aDouble1 = Double.valueOf(value);
+                            c1 = aDouble1;
                         }
                     }
                     break;
@@ -157,29 +185,46 @@
                         // 是会员享受会员续课折扣
                         if (!vipEndTime.before(new Date())){
                             String value = String.valueOf(continuingMember);
-                            BigDecimal bigDecimal = new BigDecimal(value);
-                            tCoursePackagePayment.setCashPayment(bigDecimal);
+                            c2 = Double.valueOf(value);
                         }else{ // 否则享受用户续课折扣
                             String value = String.valueOf(continuingUser);
-                            BigDecimal bigDecimal = new BigDecimal(value);
-                            tCoursePackagePayment.setCashPayment(bigDecimal);
+                            c2 = Double.valueOf(value);
                         }
                     }
                     break;
                 case 3:
                     // 限时折扣判断是否在有效期
-                    String timeFrameStart = jsonObject.getString("timeFrameStart");
-                    String timeFrameEnd = jsonObject.getString("timeFrameEnd");
+                    String timeFrameStart = jsonObject.getString("startDate");
+                    String timeFrameEnd   = jsonObject.getString("endDate");
                     SimpleDateFormat format = new SimpleDateFormat(timeFrameStart);
                     SimpleDateFormat format1 = new SimpleDateFormat(timeFrameEnd);
                     try {
-                        Date parse = format.parse(timeFrameStart);
-                        Date parse1 = format1.parse(timeFrameEnd);
-                        if (new Date().after(parse) && new Date().before(parse1)){
-                            double continuingMember = jsonObject.getDouble("discountMember");
-                                String value = String.valueOf(continuingMember);
-                                BigDecimal bigDecimal = new BigDecimal(value);
-                                tCoursePackagePayment.setCashPayment(bigDecimal);
+
+                        // 判断当日时间是否能享受到折扣
+                        String startTime = jsonObject.getString("startTime");
+                        String endTime = jsonObject.getString("endTime");
+                        // 获取当前时间
+                        Date currentTime = new Date();
+                        // 定义时间格式
+                        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                        // 解析开始时间和结束时间为Date对象
+                        Date startTime1 = sdf.parse(startTime);
+                        Date endTime1 = sdf.parse(endTime);
+                        Date date1 = new Date();
+                        date1.setHours(startTime1.getHours());
+                        date1.setMinutes(startTime1.getMinutes());
+                        date1.setSeconds(startTime1.getSeconds());
+                        Date date2 = new Date();
+                        date2.setHours(endTime1.getHours());
+                        date2.setMinutes(endTime1.getMinutes());
+                        date2.setSeconds(endTime1.getSeconds());
+                        // 检查当前时间是否在开始时间和结束时间之间
+                        if (currentTime.after(date1) && currentTime.before(date2)) {
+                            System.out.println("当前时间在开始时间和结束时间之间。");
+                            String cashPayment = jsonObject.getString("cashPayment");
+                            c3 = Double.valueOf(cashPayment);
+                        } else {
+                            System.out.println("当前时间不在开始时间和结束时间之间。");
                         }
                     } catch (ParseException e) {
                         e.printStackTrace();
@@ -190,10 +235,26 @@
 
                     break;
             }
+
+        }
+        // 判断三个折扣 谁所需支付金额最少
+        double minValue = 0.00;
+
+        if (c1 != 0.00 && (c2 == 0.00 || c1 < c2) && (c3 == 0.00 || c1 < c3)) {
+            minValue = c1;
+        } else if (c2 != 0.00 && (c3 == 0.00 || c2 < c3)) {
+            minValue = c2;
+        } else if (c3 != 0.00) {
+            minValue = c3;
+        }
+        if (minValue!=0.00){
+            BigDecimal bigDecimal = new BigDecimal(minValue);
+            tCoursePackagePayment.setCashPayment(bigDecimal);
         }
         coursePackagePaymentClient.addCoursePackagePayment(tCoursePackagePayment);
         return ResultUtil.success("添加成功");
     }
+
     /**
      * 获取列表
      */
@@ -262,6 +323,9 @@
     @RequestMapping(value = "/getCoursePackageConfig")
     @ResponseBody
     public List<CoursePackagePaymentConfig> getCoursePackageConfig(Integer id) {
+        if (id == null){
+            return null;
+        }
         return coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id);
     }
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
index 46f7658..af1f839 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
@@ -16,6 +16,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
+import com.dsh.course.feignClient.account.model.Coach;
 import com.dsh.guns.core.base.controller.BaseController;
 import com.dsh.guns.core.common.constant.factory.PageFactory;
 import com.dsh.guns.core.util.SinataUtil;
@@ -25,6 +26,7 @@
 
 import com.dsh.guns.modular.system.util.ResultUtil;
 
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -55,6 +57,17 @@
     private ICityService cityService;
     @Autowired
     private IOperatorAuthService operatorAuthService;
+
+
+    /**
+     * 根据运营商ID 获取运营商管理的省市
+     */
+    @RequestMapping(value = "/getCityByOperatorId")
+    @ResponseBody
+    public List<TOperatorCity> getCityByOperatorId(@RequestBody Integer operatorId) {
+        return operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId",operatorId));
+    }
+
     /**
      * 跳转运营商管理首页
      */
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 73db04d..4a3ec65 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
@@ -25,6 +25,7 @@
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.service.*;
 import com.dsh.guns.modular.system.util.ResultUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -194,9 +195,6 @@
         }
         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))
@@ -222,15 +220,20 @@
             users.addAll(gameUsers);
             // 去重后的用户id
             List<Integer> collect = users.stream().distinct().collect(Collectors.toList());
-            List<QueryAppUserVO> queryAppUserVOS1 = new ArrayList<>();
-            for (QueryAppUserVO queryAppUserVO : queryAppUserVOS) {
-                if (collect.contains(queryAppUserVO.getId())){
-                    queryAppUserVOS1.add(queryAppUserVO);
-                }
-            }
-            queryAppUserVOS = queryAppUserVOS1;
+            queryAppUser.setUserIds(collect);
+//            List<QueryAppUserVO> queryAppUserVOS1 = new ArrayList<>();
+//            // 根据用户消费记录 去查询用户ids
+//            for (Integer integer : collect) {
+//                if (!collect1.contains(integer)){
+//                    TAppUser tAppUser = appUserClient.queryAppUser1(integer);
+//                    QueryAppUserVO queryAppUserVO = new QueryAppUserVO();
+//                    BeanUtils.copyProperties(tAppUser,queryAppUserVO);
+//                    queryAppUserVOS.add(queryAppUserVO);
+//                }
+//            }
         }
-
+        List<QueryAppUserVO> queryAppUserVOS = appUserClient.listAll(queryAppUser);
+        List<Integer> collect1 = queryAppUserVOS.stream().map(QueryAppUserVO::getId).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/TBodySideAppointmentsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TBodySideAppointmentsController.java
index 6c9cd1f..51a7edb 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TBodySideAppointmentsController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TBodySideAppointmentsController.java
@@ -14,6 +14,8 @@
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.modular.system.model.CoachQuery;
 import com.dsh.guns.modular.system.model.Store;
+import com.dsh.guns.modular.system.model.TStore;
+import com.dsh.guns.modular.system.service.IStoreService;
 import com.dsh.guns.modular.system.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -151,6 +153,8 @@
         return queryBodySideAppointmentVOS;
     }
 
+    @Autowired
+    private IStoreService storeService;
     /**
      *  添加/修改体测预约记录
      */
@@ -161,7 +165,7 @@
         // 获取当前登录人id
         Integer cityManagerId = UserExt.getUser().getObjectId();
         if (roleType == 2){
-            CityManager cityManager = cityManagerClient.queryCityManagerById(cityManagerId);
+            TStore cityManager = storeService.getById(vo.getStoreId());
             vo.setProvince(cityManager.getProvince());
             vo.setProvinceCode(cityManager.getProvinceCode());
             vo.setCity(cityManager.getCity());
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
index 831f6d0..0bd890d 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
@@ -1,6 +1,7 @@
 package com.dsh.guns.modular.system.controller.code;
 
 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.competition.CompetitionClient;
 import com.dsh.course.feignClient.competition.model.*;
@@ -17,6 +18,7 @@
 import com.dsh.guns.modular.system.service.IStoreService;
 import com.dsh.guns.modular.system.service.TOperatorCityService;
 import com.dsh.guns.modular.system.service.TOperatorService;
+import com.dsh.guns.modular.system.util.OBSUploadUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -24,6 +26,7 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
+import sun.rmi.runtime.Log;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -83,6 +86,22 @@
         model.addAttribute("yysList",list1);
         Integer objectType = UserExt.getUser().getObjectType();
         model.addAttribute("type",objectType);
+        Integer objectId = UserExt.getUser().getObjectId();
+        List<TStore> operatorId = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId));
+        model.addAttribute("stores",operatorId);
+        if (UserExt.getUser().getObjectType()==2){
+            // 查询这个运营商管理的省
+            TOperator id = tOperatorService.getOne(new QueryWrapper<TOperator>().eq("id", UserExt.getUser().getObjectId()));
+            if (id.getType()==1){
+                // 全国
+                List<TCity> list3 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+                model.addAttribute("province",list3);
+            }else{
+                // 找到他管理的省
+                List<TOperatorCity> list4 = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", UserExt.getUser().getObjectId()).eq("pid", 0));
+                model.addAttribute("province",list4);
+            }
+        }
         return PREFIX + "TCompetition_add.html";
     }
 
@@ -149,7 +168,13 @@
         model.addAttribute("list1",list1);
         model.addAttribute("list2",list2);
         model.addAttribute("type",2);
+        String[] split = competition.getStoreId().split(",");
+        List<Integer> integers = new ArrayList<>();
+        for (String s : split) {
+            integers.add(Integer.valueOf(s));
+        }
 
+        model.addAttribute("storeIds",integers);
         return PREFIX + "TCompetition_edit.html";
     }
     @RequestMapping("/tCompetition_user/{id}")
@@ -175,13 +200,37 @@
         if(ids.size()==0){
             ids.add(-1);
         }
+        if (UserExt.getUser().getObjectType()== 2){
+            if (shopName == null)
+                shopName = "";
+            List<Integer> operatorId = storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId", UserExt.getUser().getObjectId())
+            .like("name",shopName))
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            ids = operatorId;
+        }
         Page<Competition> page = new PageFactory<Competition>().defaultPage();
         ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids);
         Page<Competition> competitions = competitionClient.list(listQuery);
+        List<Competition> records = new ArrayList<>();
         for (Competition competition : competitions.getRecords()) {
+            // 当前时间小于开始时间
+            if (competition.getStartTime().after(new Date())){
+                competition.setStatus(1);
+            }
+            if (competition.getStartTime().before(new Date())){
+                if (competition.getEndTime().after(new Date())){
+                    competition.setStatus(2);
+                }else{
+                    competition.setStatus(3);
+                }
+            }
+            if (competition.getStatus()!=state && state != null){
+            }else{
+                records.add(competition);
+            }
             for (TStore tStore : list) {
                 String[] split = competition.getStoreId().split(",");
-
                 for (String s : split) {
                     if(s.equals(String.valueOf(tStore.getId()))){
                         if (competition.getStoreName()==null){
@@ -193,6 +242,8 @@
                 }
             }
         }
+        competitions.setRecords(records);
+        System.err.println(competitions.getRecords());
         return  super.packForBT(competitions);
     }
 
@@ -229,7 +280,6 @@
                 competition.setAuditStatus(1);
             }
 
-
 //            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 //            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
 //            competition.setStartTime(format1.parse(competition.getSTime()));
@@ -260,6 +310,12 @@
             if(ToolUtil.isEmpty(competition.getRegistrationNotes())){
                 competition.setRegistrationNotes(competition1.getRegistrationNotes());
             }
+            if (UserExt.getUser().getObjectType() == 1){
+                competition.setAuditStatus(2);
+            }else{
+                competition.setAuditStatus(1);
+            }
+
             competitionClient.update(competition);
             return new SuccessTip<>();
         }catch (Exception e){
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
index b6fd68a..70bb32f 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
@@ -74,6 +74,7 @@
      */
     @RequestMapping("")
     public String index(Model model) {
+        model.addAttribute("objectType",UserExt.getUser().getObjectType());
         return PREFIX + "TCoupon.html";
     }
 
@@ -96,8 +97,6 @@
         model.addAttribute("type",coupon.getType());
         return PREFIX + "TCouponRecord.html";
     }
-
-
 
     @RequestMapping("/coupon_detail/{id}")
     public String memberCouponDetail(@PathVariable Integer id,Model model) {
@@ -124,16 +123,29 @@
             list = client.queryCity(coupon.getId());
         }
         if(coupon.getUseScope()==3){
+            // 门店ids
             list1 = client.queryStore(coupon.getId());
+            // 门店集合
             list2 = storeService.list(new LambdaQueryWrapper<TStore>().in(TStore::getId, list1));
             for (TStore tStore : list2) {
-                CityManager cityManager = cmgrClient.queryCityManagerById(tStore.getCityManagerId());
-                if (ToolUtil.isNotEmpty(cityManager)){
-                    tStore.setProvince(tStore.getProvince()+tStore.getCity());
-                    tStore.setPhone(cityManager.getName()+"-"+cityManager.getPhone());
+                if (coupon.getPublisherType() == 1){
+                    // 获取运营商id
+                    Integer operatorId = tStore.getOperatorId();
+                    TOperator operator = operatorService.getById(operatorId);
+                    User user = userService.getById(operator.getUserId());
+                    if (ToolUtil.isNotEmpty(user)){
+                        tStore.setProvince(tStore.getProvince()+tStore.getCity());
+                        tStore.setPhone(user.getName()+"-"+user.getPhone());
+                    }
+                }
+                if (coupon.getPublisherType() == 2) {
+                    CityManager cityManager = cmgrClient.queryCityManagerById(tStore.getCityManagerId());
+                    if (ToolUtil.isNotEmpty(cityManager)) {
+                        tStore.setProvince(tStore.getProvince() + tStore.getCity());
+                        tStore.setPhone(cityManager.getName() + "-" + cityManager.getPhone());
+                    }
                 }
             }
-
         }
         model.addAttribute("city",list);
         model.addAttribute("store",list2);
@@ -220,13 +232,19 @@
         ofSearch.setStatus(status);
         ofSearch.setState(state);
         if (UserExt.getUser().getObjectType()==2) {
+            // 门店ids
+            List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId()))
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            ofSearch.setStoreIds(storeIds);
+            ofSearch.setObjType(UserExt.getUser().getObjectType());
             ofSearch.setOperatorId(UserExt.getUser().getObjectId());
         }
         if (UserExt.getUser().getObjectType()==3) {
             ofSearch.setStoreId(UserExt.getUser().getObjectId());
             ofSearch.setObjType(UserExt.getUser().getObjectType());
         }
-
+        // 运营商可以查看平台添加的优惠券应只展示使用范围为全国通用、
+        // 指定城市有运营商管辖的、指定门店有运营商旗下门店
 
         return client.getCouponListOfSearch(ofSearch);
     }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
index 8459e35..4bbf06d 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -166,7 +166,9 @@
             TStore store = list2.get(0);
             List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
             model.addAttribute("site", list3);
-            List<Coach> coaches = coachClient.queryCoachByCity(code1);
+
+
+            List<Coach> coaches = coachClient.queryCoachByOperatorId(objectId);
             model.addAttribute("coach", coaches);
             System.out.println("========type========"+type);
         }
@@ -250,7 +252,7 @@
         model.addAttribute("store", list2);
         List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", tCoursePackage.getStoreId()).eq("state", 1));
         model.addAttribute("site", list3);
-        List<Coach> coaches = coachClient.queryCoachByCity(cityCode);
+        List<Coach> coaches = coachClient.queryCoachByOperatorId(UserExt.getUser().getObjectId());
         model.addAttribute("coach", coaches);
         List<CoursePackagePaymentConfig> list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id);
 
@@ -931,6 +933,7 @@
             coursePackage.setProvinceCode(store.getProvinceCode());
             coursePackage.setCity(store.getCity());
             coursePackage.setCityCode(store.getCityCode());
+            coursePackage.setAuditStatus(1);
         }
 
 
@@ -981,6 +984,10 @@
 //        classEndTime = classEndTime.substring(0, classEndTime.lastIndexOf(":"));
         coursePackage.setClassStartTime(firstString);
         coursePackage.setClassEndTime(secondString);
+        coursePackage.setAuditStatus(2);
+        if (UserExt.getUser().getObjectType() != 1){
+            coursePackage.setAuditStatus(1);
+        }
         coursePackageService.updateCoursePackage(coursePackage, coursePackagePaymentConfig);
         return ResultUtil.success();
     }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java
index 5c09f57..ce5efba 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java
@@ -72,6 +72,7 @@
     public String index(Model model) {
         List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
         model.addAttribute("list",list);
+        model.addAttribute("role",UserExt.getUser().getObjectType());
         return PREFIX + "TDiscount.html";
     }
     @RequestMapping("/audit")
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
index 32a4d46..ba075d2 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
@@ -148,6 +148,7 @@
         query.setProvince(province);
         query.setCity(city);
         query.setStoreId(storeId);
+        query.setInsertType(UserExt.getUser().getObjectType());
         if(UserExt.getUser().getObjectType()==2){
             List<Integer> operatorId = storeService.list(new QueryWrapper<TStore>()
                     .eq("operatorId", UserExt.getUser().getObjectId())).stream()
@@ -247,6 +248,12 @@
         RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery();
         // 报名课程查询query
         RegisterOrderQuery query = new RegisterOrderQuery();
+        query.setInsertType(UserExt.getUser().getObjectType());
+        if(UserExt.getUser().getObjectType()==2){
+            query.setStoresIds(storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId",UserExt.getUser().getObjectId())
+            ).stream().map(TStore::getId).collect(Collectors.toList()));
+        }
         // 赛事活动查询query
         CompetitionQuery competitionQuery = new CompetitionQuery();
         // 会员支付查询query
@@ -490,6 +497,10 @@
         RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery();
         // 报名课程查询query
         RegisterOrderQuery query = new RegisterOrderQuery();
+        query.setInsertType(UserExt.getUser().getObjectType());
+        query.setStoresIds(storeService.list(new QueryWrapper<TStore>()
+                .eq("operatorId",UserExt.getUser().getObjectId()))
+        .stream().map(TStore::getId).collect(Collectors.toList()));
         // 赛事活动查询query
         CompetitionQuery competitionQuery = new CompetitionQuery();
         // 会员支付查询query
@@ -758,6 +769,13 @@
         if(UserExt.getUser().getObjectType()==3){
             coachQuery.setStoreId(UserExt.getUser().getObjectId());
         }
+        if(UserExt.getUser().getObjectType()==2){
+            // 运营商门店ids
+            List<Integer> storeIds = storeService
+                    .list(new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId()))
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            coachQuery.setStoreIds(storeIds);
+        }
         return cancelledClassesClient.listAll(coachQuery);
     }
     /**
@@ -773,6 +791,7 @@
         query.setProvince(province);
         query.setCity(city);
         query.setStoreId(storeId);
+        query.setInsertType(UserExt.getUser().getObjectType());
         if(UserExt.getUser().getObjectType()==2){
             query.setStoresIds(storeService.list(new QueryWrapper<TStore>()
                     .eq("operatorId",UserExt.getUser().getObjectId())
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 a572c82..7151c2c 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
@@ -164,6 +164,15 @@
             }
         }
     }
+    // 运营商赛事添加 根据所选市 获取门店
+    @RequestMapping("/getStoresYys")
+    @ResponseBody
+    public Object getStoresYys(String cityCode) {
+        Integer objectId = UserExt.getUser().getObjectId();
+        List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId)
+                .eq("cityCode", cityCode));
+        return stores;
+    }
 
     @RequestMapping("/tShop_add_one")
     public String tCompetitionAddOne(Integer id,Model model) {
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
index 006f64e..e31e2da 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -187,6 +187,8 @@
         SiteBooking siteBooking = new SiteBooking();
         siteBooking.setId(id);
         siteBooking.setStatus(1);
+        siteBooking.setPayType(4);
+        siteBooking.setPayUserId(UserExt.getUser().getObjectId());
         iSiteBookingService.updateById(siteBooking);
 
         return new ResultUtil<>(0,0,"手动支付成功",null,null);
@@ -670,10 +672,7 @@
         Integer objectId = UserExt.getUser().getObjectId();
 
         String cityCode = null;
-        if(objectType == 2){//城市管理员
-            CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
-            cityCode = cityManager.getCityCode();
-        }
+
         List<Map<String, Object>> list = storeService.queryProvince(cityCode);
         model.addAttribute("province", list);
         Object code = list.get(0).get("code");
@@ -689,7 +688,16 @@
         List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
         model.addAttribute("site", list3);
         model.addAttribute("objType", UserExt.getUser().getObjectType());
-
+        // 查询运营商下所有门店 所有场地
+        if (objectType == 2){
+            List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId));
+            model.addAttribute("store", stores);
+            // 门店ids
+            List<Integer> storeIds = stores.stream().map(TStore::getId).collect(Collectors.toList());
+            List<TSite> sites = siteService.list(new QueryWrapper<TSite>().in("storeId", storeIds));
+            model.addAttribute("site", sites);
+        }
+        model.addAttribute("objectType", objectType);
 
         return PREFIX+"yuyue_edit.html";
     }
@@ -805,23 +813,32 @@
         Integer objectId = UserExt.getUser().getObjectId();
 
         String cityCode = null;
-        if(objectType == 2){//城市管理员
-            CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
-            cityCode = cityManager.getCityCode();
-        }
+
+
         List<Map<String, Object>> list = storeService.queryProvince(cityCode);
         model.addAttribute("province", list);
+
         Object code = list.get(0).get("code");
         List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode);
+
         model.addAttribute("city", list1);
         String code1 = list1.get(0).get("code").toString();
+
         List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1));
         model.addAttribute("store", list2);
         TStore store = list2.get(0);
         List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
         model.addAttribute("site", list3);
-
-
+        // 查询运营商下所有门店 所有场地
+        if (objectType == 2){
+            List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId));
+            model.addAttribute("store", stores);
+            // 门店ids
+            List<Integer> storeIds = stores.stream().map(TStore::getId).collect(Collectors.toList());
+            List<TSite> sites = siteService.list(new QueryWrapper<TSite>().in("storeId", storeIds));
+            model.addAttribute("site", sites);
+        }
+        model.addAttribute("objectType", objectType);
         return PREFIX+"yuyue_info.html";
     }
 
@@ -847,10 +864,20 @@
             studentQeryDto.setStart(split[0]);
             studentQeryDto.setEnd(split[1]);
         }
-
-
-
-
+        // 如果当前登陆人是运营商 只查询该运营商下的课包的数据
+        if(UserExt.getUser().getObjectType() == 2){
+            // 先查询这个运营商下的所有门店ids
+            List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId()))
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            // 根据门店ids 查询所有课包ids
+            List<TCoursePackage> tCoursePackages = new ArrayList<>();
+            for (Integer storeId : storeIds) {
+                List<TCoursePackage> coursePackageByStoreId = coursePackageClient.getCoursePackageByStoreId(storeId);
+                tCoursePackages.addAll(coursePackageByStoreId);
+            }
+            List<Integer> coursePackageByStoreIds = tCoursePackages.stream().distinct().map(TCoursePackage::getId).collect(Collectors.toList());
+            studentQeryDto.setCoursePackageIds(coursePackageByStoreIds);
+        }
         List<Map<String, Object>>  pays = coursePackageClient.getStudentTotal(studentQeryDto);
 
         System.out.println("=========getStudentTotal======="+pays);
@@ -869,14 +896,13 @@
             pacQueryDto.setStart(split[0]);
             pacQueryDto.setEnd(split[1]);
         }
-
-
-
-
+        if (UserExt.getUser().getObjectType() == 2){
+            List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId()))
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            pacQueryDto.setStoreIds(storeIds);
+        }
         List<Map<String, Object>>  pays = coursePackageClient.bypac(pacQueryDto);
-
         System.out.println("=========getStudentTotal======="+pays);
-
         return pays;
     }
 
@@ -923,7 +949,27 @@
         }
         List<Map<String,Object>> orders =   ballClient.listorder(bookingQuery);
         System.out.println("=======ballQueryDto=========="+bookingQuery);
+        for (Map<String, Object> vo : orders) {
 
+
+            if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 1){
+                vo.put("payType","微信");
+            }
+            if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 2){
+                vo.put("payType","支付宝");
+            }
+            if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 3){
+                vo.put("payType","玩湃币");
+            }
+            if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 4){
+                if (vo.get("payUserId")!=null){
+                    User payUserId = userService.getById(Integer.parseInt(vo.get("payUserId").toString()));
+                    if(payUserId!=null){
+                        vo.put("payType","手动支付"+"-"+payUserId.getName());
+                    }
+                }
+            }
+        }
         return orders;
     }
 
@@ -1143,7 +1189,6 @@
         String booker = siteBooking.getBooker();
         TAppUser appUserByPhone = appUserClient.getAppUserByPhone(phone);
         TStore byId1 = storeService.getById(siteBooking.getStoreId());
-
         if (appUserByPhone== null){
             // 则当前预约人不是会员 添加到会员表里
             TAppUser tAppUser = new TAppUser();
@@ -1159,6 +1204,7 @@
             tAppUser.setInsertTime(new Date());
             tAppUser.setPassword(MD5.md5("111111"));
             appUserClient.addAppUser1(tAppUser);
+            siteBooking.setAppUserId(tAppUser.getId());
         }else{
             siteBooking.setAppUserId(appUserByPhone.getId());
         }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
index 1dffead..7263dbc 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -1,15 +1,19 @@
 package com.dsh.guns.modular.system.controller.system;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.course.dto.*;
 import com.dsh.course.entity.EvaluateStudent;
 import com.dsh.course.feignClient.account.AppUserClient;
 import com.dsh.course.feignClient.account.StudentClient;
 import com.dsh.course.feignClient.account.model.TAppUser;
+import com.dsh.course.feignClient.competition.CompetitionClient;
+import com.dsh.course.feignClient.competition.model.ListQuery;
 import com.dsh.course.feignClient.course.CoursePackageClient;
 import com.dsh.course.feignClient.course.CourseStuddentClient;
 import com.dsh.course.feignClient.course.model.TCoursePackage;
 import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
+import com.dsh.course.feignClient.other.BallClient;
 import com.dsh.course.feignClient.other.HistoryClient;
 import com.dsh.course.model.MoneyBack;
 import com.dsh.course.model.dto.InsertBackDto;
@@ -18,11 +22,11 @@
 import com.dsh.course.util.HtmlToPdfUtils;
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.base.controller.BaseController;
-import com.dsh.guns.modular.system.model.CourseCounsum;
-import com.dsh.guns.modular.system.model.TStudent;
-import com.dsh.guns.modular.system.model.User;
+import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.model.dto.*;
 import com.dsh.guns.modular.system.service.EvaluateStudentService;
+import com.dsh.guns.modular.system.service.ISiteBookingService;
+import com.dsh.guns.modular.system.service.IStoreService;
 import com.dsh.guns.modular.system.service.ITStudentService;
 import com.dsh.guns.modular.system.util.BigDecimalToChineseAmountUtil;
 import com.dsh.guns.modular.system.util.ResultUtil;
@@ -46,6 +50,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 控制器
@@ -67,7 +72,10 @@
     @Resource
     private HistoryClient historyClient;
 
-
+    @Autowired
+    private IStoreService storeService;
+    @Autowired
+    private CompetitionClient competitionClient;
 
     @RequestMapping("download")
     public void down(HttpServletRequest request, HttpServletResponse response) throws IOException {
@@ -334,6 +342,10 @@
         return new ResultUtil<>(0,0,null,map,null);
     }
 
+    @Autowired
+    private ISiteBookingService siteBookingService;
+    @Autowired
+    private BallClient ballClient;
     /**
      * 获取列表
      */
@@ -350,11 +362,38 @@
             search.setIds(ids);
         }
         if(UserExt.getUser().getObjectType()==2){
+            // 获取运营商下的所有门店id集合
+            List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>()
+                    .eq("operatorId", UserExt.getUser().getObjectId()))
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            // 根据门店id集合查询 属于该运营商下的门店举办的赛事
+            ListQuery listQuery = new ListQuery();
+            listQuery.setIds(storeIds);
+            // 通过门店ids 获取赛事的支付记录 获取到用户的ids
+            List<Integer> list = competitionClient.getUserIds(listQuery);
+
+            // 获取场地预约记录 拿到用户ids
+            List<Integer> siteUsers = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", storeIds))
+                    .stream().map(SiteBooking::getAppUserId).collect(Collectors.toList());
+            // 获取课程购买记录 拿到用户ids
+            List<Integer> cpUsers = coursePackageClient.getCoursePackageByStoreIds(storeIds);
+            // 获取游戏记录 拿到用户ids
+            List<Integer> gameUsers = ballClient.getGameByStoreIds(storeIds);
+            // 用户ids
+            List<Integer> users = new ArrayList<>();
+            users.addAll(list);
+            users.addAll(siteUsers);
+            users.addAll(cpUsers);
+            users.addAll(gameUsers);
+            // 去重后的用户id
+            List<Integer> collect = users.stream().distinct().collect(Collectors.toList());
             ids = appUserClient.getUserYYs(UserExt.getUser().getObjectId());
+            ids.addAll(collect);
+            List<Integer> collect1 = ids.stream().distinct().collect(Collectors.toList());
             if(ids.size()==0){
                 ids.add(-1);
             }
-            search.setIds(ids);
+            search.setIds(collect1);
         }
         System.out.println("============学员查询接口=========");
         return itStudentService.listAll(search);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CancelClassesQuery.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CancelClassesQuery.java
index a99c29b..9e7d748 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CancelClassesQuery.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CancelClassesQuery.java
@@ -23,4 +23,5 @@
     private List<Integer> studentIds;
 
     private Integer storeId;
+    private List<Integer> storeIds;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/PacQueryDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/PacQueryDto.java
index 32ea58f..53d1d3b 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/PacQueryDto.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/PacQueryDto.java
@@ -3,6 +3,8 @@
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class PacQueryDto {
     String cityCode;
@@ -12,6 +14,5 @@
     String start;
     String end;
     String provinceCode;
-
-
+    List<Integer> storeIds;
 }
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html
index bc2951e..c2d1727 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html
@@ -98,15 +98,18 @@
                             </div>
                         </div>
                         <div class="hidden-xs" id="TStudentTableToolbar" role="group">
-                                <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/>
 
-                                <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/>
+
+                            <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/>
+                            @if(role == 1){
+                            <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/>
+                            @}
                             <#button name="确认到店" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" space="true"/>
                             <#button name="取消预约" icon="fa-edit" clickFun="TStudent.openTStudentDetail4()" space="true"/>
                             <#button name="手动支付" icon="fa-edit" clickFun="TStudent.openTStudentDetail6()" space="true"/>
-
+                            @if(role == 1){
                             <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail5()" space="true"/>
-
+                            @}
                             @if(shiro.hasPermission("/tStudent/delete")){
                                 <#button name="删除" icon="fa-remove" clickFun="TStudent.delete()" space="true"/>
                             @}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
index 9d1d16c..5c7650b 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
@@ -133,7 +133,7 @@
 
 
                 <div class="form-group">
-                    <label class="col-sm-3 control-label">预约人:</label>
+                    <label class="col-sm-3 control-label">联系电话:</label>
                     <div class="col-sm-4">
                         <input class="form-control" id="phone" name="phone" type="text" >
 
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html
index 04679c5..a445e35 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html
@@ -9,7 +9,7 @@
         <input type="hidden" id="id" value="${item.id}">
         <div class="form-horizontal">
             <div class="row">
-                @if(objType !=3){
+                @if(objType ==1){
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*所在省:</label>
                     <div class="col-sm-4">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html
index a8516c3..15777a2 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html
@@ -9,6 +9,7 @@
         <input type="hidden" id="id" value="${item.id}">
         <div class="form-horizontal">
             <div class="row">
+                @if(objectType == 1){
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*所在省:</label>
                     <div class="col-sm-4">
@@ -29,6 +30,7 @@
                         </select>
                     </div>
                 </div>
+                @}
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*所属门店:</label>
                     <div class="col-sm-4">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
index 7a7fc56..cf1a7f3 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
@@ -47,6 +47,7 @@
             <div class="row">
                 <input type="hidden" id="id" value="${item.id}">
                 <input type="hidden" id="type" name="type" value="${type}">
+                <input type="hidden" id="objectType" value="${objectType}">
                 @if(objectType==1){
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*所在省:</label>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment.html
index 91b7210..9af8af1 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment.html
@@ -18,7 +18,7 @@
                                             所在省
                                         </button>
                                     </div>
-                                    <select class="form-control" id="pCode" onchange="TCompetition.oneChange(this)">
+                                    <select class="form-control" id="pCode" onchange="TQuestion.oneChange(this)">
                                         <option value="">全部</option>
                                         @for(obj in list){
                                         <option value="${obj.code}">${obj.name}</option>
@@ -75,15 +75,15 @@
                             </div>
 
                             <div class="col-sm-3">
-                                <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
-                                <#button name="重置" icon="fa-trash" clickFun="TCompetition.resetSearch()" space="true"/>
+                                <#button name="搜索" icon="fa-search" clickFun="TQuestion.search()"/>
+                                <#button name="重置" icon="fa-trash" clickFun="TQuestion.resetSearch()" space="true"/>
                             </div>
                         </div>
-                        <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
-                            <#button name="添加" icon="fa-plus" clickFun="TCompetition.openAddTCompetition()"/>
-                            <#button name="手动支付" icon="fa-remove" clickFun="TCompetition.unfreeze()" space="true"/>
+                        <div class="hidden-xs" id="TQuestionTableToolbar" role="group">
+                            <#button name="添加" icon="fa-plus" clickFun="TQuestion.openAddTQuestion()"/>
+                            <#button name="手动支付" icon="fa-remove" clickFun="TQuestion.unfreeze()" space="true"/>
                         </div>
-                        <#table id="TCompetitionTable"/>
+                        <#table id="TQuestionTable"/>
                     </div>
                 </div>
             </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html
index a1276d3..d6dc004 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html
@@ -56,7 +56,7 @@
                 <label class="col-sm-3 control-label">会员手机号:</label>
                 <div class="col-sm-9" style="display: flex;">
                     <input style="width: 300px" class="form-control" id="vipPhone" name="vipPhone" placeholder="请输入家长会员手机号" type="number">
-                    <#button btnCss="info" name="查询" id="ensure" icon="fa-check" clickFun="TCompetition.getStudent()"/>
+                    <#button btnCss="info" name="查询" id="ensure" icon="fa-check" clickFun="TQuestion.getStudent()"/>
                 </div>
             </div>
             <div class="form-group" >
@@ -77,7 +77,7 @@
             <div class="form-group" id="provinceCode">
                 <label class="col-sm-3 control-label">所在省:</label>
                 <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="pCode" name="pCode" onchange="TCompetition.oneChange(this)">
+                    <select style="width: 300px" class="form-control" id="pCode" name="pCode" onchange="TQuestion.oneChange(this)">
                         <option value="">选择省</option>
                         @for(obj in list){
                         <option value="${obj.code}">${obj.name}</option>
@@ -88,7 +88,7 @@
             <div class="form-group" id="cityCode">
                 <label class="col-sm-3 control-label">所在市:</label>
                 <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="cCode" name="cCode" onchange="TCompetition.threeChange(this)">
+                    <select style="width: 300px" class="form-control" id="cCode" name="cCode" onchange="TQuestion.threeChange(this)">
                         <option value="">选择市</option>
                     </select>
                 </div>
@@ -108,7 +108,7 @@
             <div class="form-group">
                 <label class="col-sm-3 control-label">*课包类型:</label>
                 <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="coursePackageType" name="store" onchange="TCompetition.getCoursePackage(this)" >
+                    <select style="width: 300px" class="form-control" id="coursePackageType" name="store" onchange="TQuestion.getCoursePackage(this)" >
                         <option value="">请选择</option>
                         @for(obj in coursePackageType){
                         <option value="${obj.id}">${obj.name}</option>
@@ -120,29 +120,28 @@
             <div class="form-group">
                 <label class="col-sm-3 control-label">*课包名称:</label>
                 <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="coursePackageName" name="store" onchange="TCompetition.getCoursePackageConfig(this)"  >
+                    <select style="width: 300px" class="form-control" id="coursePackageName" name="store" onchange="TQuestion.getCoursePackageConfig(this)"  >
                         <option value="">选择课包</option>
                     </select>
                 </div>
             </div>
-            @if(roleType == 1){
             <div class="form-group">
                 <label class="col-sm-3 control-label">*课时规格:</label>
                 <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="courseTime" name="store">
+                    <select style="width: 300px" class="form-control" id="courseTime" name="store" onchange="TQuestion.getCoursePackagePrice(this)">
                         <option value="">选择规格</option>
                     </select>
                 </div>
             </div>
-            @}
-            <div class="form-group" >
+
+            <div class="form-group" id = "c1" hidden >
                 <label class="col-sm-3 control-label">*支付金额:</label>
                 <div class="col-sm-9" style="display: flex;">
                     <input style="width: 300px" class="form-control" id="cashPayment" name="cashPayment" placeholder="请输入金额" type="number">
                     <span style="margin-left: 5px;margin-top: 5px">¥</span>
                 </div>
             </div>
-            <div class="form-group" >
+            <div class="form-group" id = "c2" hidden >
                 <label class="col-sm-3 control-label">*玩湃币支付:</label>
                 <div class="col-sm-9" style="display: flex;">
                     <input style="width: 300px" class="form-control" id="playPaiCoin" name="playPaiCoin" placeholder="请输入金额" type="number">
@@ -154,8 +153,8 @@
 
     <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="TCompetition.addSubmit()"/>
-            <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCompetition.close()"/>
+            <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TQuestion.addSubmit()"/>
+            <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TQuestion.close()"/>
         </div>
     </div>
 
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
index 9a840b2..9fc7e4c 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
@@ -65,6 +65,7 @@
                 <label class="col-sm-3 control-label">所在省:</label>
                 <div class="col-sm-9">
                     <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange(this)">
+
                     </select>
                 </div>
             </div>
@@ -77,6 +78,29 @@
                 </div>
             </div>
             @}
+            @if(type==2){
+            <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.oneChange9(this)">
+                        <option value="">选择省</option>
+                        @for(i in province){
+                        <option value="${i.code}">${i.name}</option>
+                        @}
+                    </select>
+                </div>
+            </div>
+            <div class="form-group" id="cityCode">
+                <label class="col-sm-3 control-label">举办市:</label>
+                <div class="col-sm-9">
+                    <select class="form-control" id="cCode" name="cCode" onchange="TCarInfoDlg.oneChangeNext9(this)">
+                        <option value="">选择市</option>
+
+                    </select>
+                </div>
+            </div>
+            @}
+            @if(type==1){
             <div class="form-group" id="shop">
                 <label class="col-sm-3 control-label">举办门店:</label>
                 <div class="col-sm-9">
@@ -85,6 +109,17 @@
                     </select>
                 </div>
             </div>
+            @}
+            @if(type==2){
+            <div class="form-group" id="shop">
+                <label class="col-sm-3 control-label">举办门店:</label>
+                <div class="col-sm-9">
+                    <select class="form-control" id="shopId" name="shopId" multiple>
+
+                    </select>
+                </div>
+            </div>
+            @}
         <#input id="name" name="赛事名称" type="text"/>
         <#input id="startTime" name="开始时间" type="text"/>
         <#input id="endTime" name="结束时间" type="text"/>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCoupon.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCoupon.html
index d394b6d..fa3b465 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCoupon.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCoupon.html
@@ -6,7 +6,7 @@
                 <h5>优惠券管理</h5>
             </div>
             <div class="ibox-content">
-
+                <input id="objectType" value="${objectType}" hidden="hidden">
                 <div class="row row-lg">
                     <div class="col-sm-12">
                         <div class="row">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html
index 009a6c1..95e41ad 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html
@@ -59,8 +59,9 @@
                 <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
                     <#button name="上架" icon="fa-plus" clickFun="TCompetition.updateState(1)"/>
                     <#button name="下架" icon="fa-edit" clickFun="TCompetition.updateState(2)" space="true"/>
+                    @if(role == 1){
                     <#button name="查看详情" icon="fa-remove" clickFun="TCompetition.info()" space="true"/>
-
+                    @}
                 </div>
                 <#table id="TCompetitionTable"/>
             </div>
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js b/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
index fbfd161..f4b07fe 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
@@ -38,7 +38,9 @@
             }}
     ];
 };
-
+TQuestion.close = function() {
+    parent.layer.close(window.parent.TQuestion.layerIndex);
+}
 /**
  * 检查是否选中
  */
@@ -537,9 +539,7 @@
     TQuestion.table.refresh({query: queryData});
 };
 
-TQuestion.close = function() {
-    parent.layer.close(window.parent.TQuestion.layerIndex);
-}
+
 /**
  * 重置搜索
  */
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
index a3ed6b0..4a36025 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
@@ -43,7 +43,7 @@
             align: 'center',
             valign: 'middle',
             formatter: function(value, row) {
-                    if (row.status === 0) {
+                    if (row.status === 0 ) {
                                if (value) {
                         var moneyValues = value.split(',');
                     var moneyText = moneyValues[0] + '元/' + moneyValues[1] + '玩湃币';
@@ -51,11 +51,16 @@
                     }
 
                     else {
-                        if (row.payType === 3){
-                        return row.payMoney+'玩湃币' }else {
+                        if (row.payType === 4){
+                            var moneyValues = value.split(',');
+                            var moneyText = moneyValues[0] + '元/' + moneyValues[1] + '玩湃币';
+                            return moneyText;
+                        }else if (row.payType === 3){
+                            return row.payMoney+'玩湃币' }else {
                             return row.payMoney+'元'
                         }
 
+
                     }
 
             }
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js
index 2e5962f..4900d51 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js
@@ -37,7 +37,7 @@
             }},
         {title: '发放方式', field: 'distributionMethod', visible: true, align: 'center', valign: 'middle',
             formatter: function (value, row, index) {
-                return {1: "积分购买", 2: "注册赠送", 3: "自动发券"}[value]
+                return {1: "积分购买", 2: "注册赠送", 3: "自动发券",4:"课包赠送"}[value]
             }},
         {title: '有效期', field: 'timeValue', visible: true, align: 'center', valign: 'middle'},
         {title: '用户人群', field: 'userPopulation', visible: true, align: 'center', valign: 'middle',
@@ -336,7 +336,6 @@
 
 $(function () {
     // console.log("父级"+window.parent.document.getElementById("cityCode").val())
-    console.log("父级" + window.parent.document.getElementById("cityCode").value);
     var defaultColunms = TCoupon.initColumn();
     var table = new BSTable(TCoupon.id, "/tCouponManage/list1", defaultColunms);
     table.setPaginationType("client");
@@ -346,8 +345,14 @@
     //     params.customParam2 = window.parent.document.getElementById("cityCode").value;
     //     return params;
     // };
-
-    table.queryParams = {'cityCode': window.parent.document.getElementById("cityCode").value,'storeId': window.parent.document.getElementById("storeId").value}
-    table.height=400
+    var cityCode = ""
+    console.log("看看市")
+    console.log(window.parent.document.getElementById("cityCode"))
+    if (!window.parent.document.getElementById("cityCode")== null){
+        cityCode = window.parent.document.getElementById("cityCode").value;
+    }
+    table.queryParams = {'cityCode': cityCode,
+        'storeId': window.parent.document.getElementById("storeId").value}
+    table.height=600
     TCoupon.table = table.init();
 });
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js
index b1ac1fa..8752c56 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js
@@ -425,14 +425,18 @@
 
         })
     });
-    if(null == provinceCode || '' == provinceCode){
-        Feng.error("所在省不能为空");
-        return
+
+    if ($('#objectType').val() == 1) {
+        if (null == provinceCode || '' == provinceCode) {
+            Feng.error("所在省不能为空");
+            return
+        }
+        if (null == cityCode || '' == cityCode) {
+            Feng.error("所在市不能为空");
+            return
+        }
     }
-    if(null == cityCode || '' == cityCode){
-        Feng.error("所在市不能为空");
-        return
-    }
+
     if(null == storeId || '' == storeId){
         Feng.error("所属门店不能为空");
         return
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
index 7d2504a..aadbb71 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
@@ -1,8 +1,8 @@
 /**
  * 车辆管理管理初始化
  */
-var TCompetition = {
-    id: "TCompetitionTable",	//表格id
+var TQuestion = {
+    id: "TQuestionTable",	//表格id
     seItem: null,		//选中的条目
     table: null,
     layerIndex: -1
@@ -12,7 +12,7 @@
 /**
  * 初始化表格的列
  */
-TCompetition.initColumn = function () {
+TQuestion.initColumn = function () {
     return [
         {field: 'selectItem', checkbox: true},
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
@@ -76,13 +76,13 @@
 /**
  * 检查是否选中
  */
-TCompetition.check = function () {
+TQuestion.check = function () {
     var selected = $('#' + this.id).bootstrapTable('getSelections');
     if(selected.length == 0){
             Feng.info("请先选中表格中的某一记录!");
         return false;
     }else{
-        TCompetition.seItem = selected[0];
+        TQuestion.seItem = selected[0];
         return true;
     }
 };
@@ -90,7 +90,7 @@
 /**
  * 点击添加车辆管理
  */
-TCompetition.openAddTCompetition = function () {
+TQuestion.openAddTQuestion = function () {
     var index = layer.open({
         type: 2,
         title: '添加',
@@ -105,7 +105,7 @@
 /**
  * 打开查看车辆管理详情
  */
-TCompetition.openTCompetitionDetail = function () {
+TQuestion.openTCompetitionDetail = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -113,12 +113,12 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_update/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_update/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
 };
-TCompetition.info = function () {
+TQuestion.info = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -126,12 +126,12 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_info/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_info/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
 };
-TCompetition.gift = function () {
+TQuestion.gift = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -139,12 +139,12 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_gift/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_gift/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
 };
-TCompetition.indexSet = function () {
+TQuestion.indexSet = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -152,7 +152,7 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_indexSet/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_indexSet/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
@@ -161,9 +161,9 @@
 /**
  * 删除车辆管理
  */
-TCompetition.delete = function () {
+TQuestion.delete = function () {
     if (this.check()) {
-        var nickname = TCompetition.seItem.carLicensePlate;
+        var nickname = TQuestion.seItem.carLicensePlate;
         if (nickname == "" || nickname == null || nickname == undefined){
                 nickname = "该车辆";
         }else{
@@ -186,7 +186,7 @@
                 }else {
                     swal("Hapus berhasil!", "Anda berhasil menghapus" + nickname + "。", "success");
                 }
-                TCompetition.table.refresh();
+                TQuestion.table.refresh();
             }, function (data) {
                 if(language==1){
                     swal("删除失败", data.responseJSON.message + "!", "warning");
@@ -202,7 +202,7 @@
         });
     }
 };
-TCompetition.oneChange = function (e) {
+TQuestion.oneChange = function (e) {
     console.log(111)
     var oneId=$(e).val();
     console.log(oneId)
@@ -220,7 +220,7 @@
     ajax.start();
 };
 
-TCompetition.nextStore = function (e) {
+TQuestion.nextStore = function (e) {
     var oneId=$(e).val();
     console.log(oneId)
     var content = "<option value=''>请选择</option>";
@@ -235,7 +235,7 @@
     ajax.set("storeId",oneId);
     ajax.start();
 };
-TCompetition.addSubmit = function(){
+TQuestion.addSubmit = function(){
     var data = {
         appUserId:null,
         studentId:null,
@@ -318,8 +318,8 @@
                 Feng.error("当前课包预约人数已满!")
             }else{
                 Feng.success("上架成功!");
-                TCompetition.close();
-                TCompetition.search();
+                TQuestion.close();
+                TQuestion.search();
             }
         },
         error: function(xhr, status, error) {
@@ -331,10 +331,10 @@
 /**
  * 关闭此对话框
  */
-TCompetition.close = function() {
-    parent.layer.close(window.parent.TCompetition.layerIndex);
+TQuestion.close = function() {
+    parent.layer.close(window.parent.TQuestion.layerIndex);
 }
-TCompetition.getCoursePackage = function (e) {
+TQuestion.getCoursePackage = function (e) {
     var oneId=$(e).val();
     console.log(oneId)
     var content = "<option value=''>请选择</option>";
@@ -350,7 +350,7 @@
     ajax.set("storeId",oneId);
     ajax.start();
 };
-TCompetition.getCoursePackageConfig = function (e) {
+TQuestion.getCoursePackageConfig = function (e) {
     var oneId=$(e).val();
     console.log(oneId)
     var content = "<option value=''>请选择</option>";
@@ -366,7 +366,7 @@
     ajax.set("id",oneId);
     ajax.start();
 };
-TCompetition.twoChange = function (e) {
+TQuestion.twoChange = function (e) {
     var oneId=e;
     var content = "<option value=''>请选择</option>";
     var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
@@ -382,7 +382,7 @@
     ajax.start();
 };
 
-TCompetition.threeChange = function (e) {
+TQuestion.threeChange = function (e) {
     var content1 = "<option value=''>请选择门店</option>";
     var ajax2=new $ax(Feng.ctxPath + "/cpPayment/getStore", function(data){
         $.each(data, function(k,v) {
@@ -395,7 +395,7 @@
 };
 
 
-TCompetition.getStudent = function () {
+TQuestion.getStudent = function () {
     var phone = $("#vipPhone").val();
     var phoneRegex = /^1[3456789]\d{9}$/;
     // 使用正则表达式进行验证
@@ -494,7 +494,7 @@
                         if (option.text === province) {
                             option.selected = true;
                             console.log(option.value)
-                            TCompetition.twoChange(option.value);
+                            TQuestion.twoChange(option.value);
                             break; // 找到匹配的选项后,可以选择停止遍历
                         }
                     }
@@ -507,7 +507,7 @@
                             option.selected = true;
                             c =  option.text;
 
-                            TCompetition.threeChange(c)
+                            TQuestion.threeChange(c)
 
                             break; // 找到匹配的选项后,可以选择停止遍历
                         }
@@ -523,11 +523,11 @@
 
 };
 
-TCompetition.freeze = function () {
+TQuestion.freeze = function () {
     if (this.check()) {
         var ajax = new $ax(Feng.ctxPath + "/tShop/freeze", function (data) {
             Feng.success("冻结成功!");
-            TCompetition.table.refresh();
+            TQuestion.table.refresh();
         }, function (data) {
             Feng.error("冻结失败!" + data.responseJSON.message + "!");
         });
@@ -535,7 +535,7 @@
         ajax.start();
     }
 };
-TCompetition.unfreeze = function () {
+TQuestion.unfreeze = function () {
     if (this.check()) {
         var selected = $('#' + this.id).bootstrapTable('getSelections');
 
@@ -563,7 +563,7 @@
             data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
             success: function(response) {
                 Feng.success("支付成功!");
-                TCompetition.table.refresh();
+                TQuestion.table.refresh();
             },
             error: function(xhr, status, error) {
                 var errorMessage = xhr.responseText ? xhr.responseText : "上架失败!";
@@ -572,13 +572,13 @@
         });
     }
 };
-TCompetition.reload = function () {
+TQuestion.reload = function () {
     if (this.check()) {
         let id = this.seItem.id
         var operation = function(){
             var ajax = new $ax(Feng.ctxPath + "/tCity/pwd", function (data) {
                 Feng.success("重置成功!");
-                TCompetition.table.refresh();
+                TQuestion.table.refresh();
             }, function (data) {
                 Feng.error("重置失败!" + data.responseJSON.message + "!");
             });
@@ -590,7 +590,7 @@
 
 };
 
-TCompetition.carInsurance = function () {
+TQuestion.carInsurance = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -609,7 +609,7 @@
 /**
  * 查询车辆管理列表
  */
-TCompetition.search = function () {
+TQuestion.search = function () {
     var queryData = {};
     if ($('#pCode option:selected').text()!="全部"){
         queryData['province'] = $('#pCode option:selected').text();
@@ -622,10 +622,10 @@
     queryData['payStatus'] = $("#state").val();
     queryData['payUser'] = $("#payUser").val();
     queryData['payStudent'] = $("#payStudent").val();
-    TCompetition.table.refresh({query: queryData});
+    TQuestion.table.refresh({query: queryData});
 };
 
-TCompetition.resetSearch = function () {
+TQuestion.resetSearch = function () {
     $("#pCode").val("");
     $("#cCode").val("");
     $("#coursePackage").val("");
@@ -633,14 +633,14 @@
     $("#state").val("");
     $("#payUser").val("");
     $("#payStudent").val("");
-    TCompetition.search();
+    TQuestion.search();
 };
 
 $(function () {
-    var defaultColunms = TCompetition.initColumn();
-    var table = new BSTable(TCompetition.id, "/cpPayment/listAll", defaultColunms);
+    var defaultColunms = TQuestion.initColumn();
+    var table = new BSTable(TQuestion.id, "/cpPayment/listAll", defaultColunms);
     table.setPaginationType("client");
-    TCompetition.table = table.init();
+    TQuestion.table = table.init();
 });
 
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
index e69bfcb..bf35e44 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
@@ -1,8 +1,8 @@
 /**
  * 车辆管理管理初始化
  */
-var TCompetition = {
-    id: "TCompetitionTable",	//表格id
+var TQuestion = {
+    id: "TQuestionTable",	//表格id
     seItem: null,		//选中的条目
     table: null,
     layerIndex: -1
@@ -12,7 +12,7 @@
 /**
  * 初始化表格的列
  */
-TCompetition.initColumn = function () {
+TQuestion.initColumn = function () {
     return [
         {field: 'selectItem', checkbox: true},
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
@@ -76,13 +76,13 @@
 /**
  * 检查是否选中
  */
-TCompetition.check = function () {
+TQuestion.check = function () {
     var selected = $('#' + this.id).bootstrapTable('getSelections');
     if(selected.length == 0){
         Feng.info("请先选中表格中的某一记录!");
         return false;
     }else{
-        TCompetition.seItem = selected[0];
+        TQuestion.seItem = selected[0];
         return true;
     }
 };
@@ -90,7 +90,7 @@
 /**
  * 点击添加车辆管理
  */
-TCompetition.openAddTCompetition = function () {
+TQuestion.openAddTQuestion = function () {
     var index = layer.open({
         type: 2,
         title: '添加',
@@ -105,7 +105,7 @@
 /**
  * 打开查看车辆管理详情
  */
-TCompetition.openTCompetitionDetail = function () {
+TQuestion.openTQuestionDetail = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -113,12 +113,12 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_update/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_update/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
 };
-TCompetition.info = function () {
+TQuestion.info = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -126,12 +126,12 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_info/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_info/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
 };
-TCompetition.gift = function () {
+TQuestion.gift = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -139,12 +139,12 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_gift/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_gift/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
 };
-TCompetition.indexSet = function () {
+TQuestion.indexSet = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -152,7 +152,7 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tShop/tShop_indexSet/' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/tShop/tShop_indexSet/' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
@@ -161,9 +161,9 @@
 /**
  * 删除车辆管理
  */
-TCompetition.delete = function () {
+TQuestion.delete = function () {
     if (this.check()) {
-        var nickname = TCompetition.seItem.carLicensePlate;
+        var nickname = TQuestion.seItem.carLicensePlate;
         if (nickname == "" || nickname == null || nickname == undefined){
             nickname = "该车辆";
         }else{
@@ -186,7 +186,7 @@
                 }else {
                     swal("Hapus berhasil!", "Anda berhasil menghapus" + nickname + "。", "success");
                 }
-                TCompetition.table.refresh();
+                TQuestion.table.refresh();
             }, function (data) {
                 if(language==1){
                     swal("删除失败", data.responseJSON.message + "!", "warning");
@@ -202,7 +202,7 @@
         });
     }
 };
-TCompetition.oneChange = function (e) {
+TQuestion.oneChange = function (e) {
     console.log(111)
     var oneId=$(e).val();
     console.log(oneId)
@@ -220,7 +220,7 @@
     ajax.start();
 };
 
-TCompetition.nextStore = function (e) {
+TQuestion.nextStore = function (e) {
     var oneId=$(e).val();
     console.log(oneId)
     var content = "<option value=''>请选择</option>";
@@ -236,7 +236,7 @@
     ajax.set("storeId",oneId);
     ajax.start();
 };
-TCompetition.addSubmit = function(){
+TQuestion.addSubmit = function(){
     var data = {
         appUserId:null,
         studentId:null,
@@ -327,9 +327,9 @@
             }else if(response == "5002"){
                 Feng.error("剩余课时不足,无法购买!")
             }else{
-                Feng.success("上架成功!");
-                TCompetition.close();
-                window.parent.TCompetition.table.refresh();
+                Feng.success("购买成功!");
+                TQuestion.close();
+                window.parent.TQuestion.table.refresh();
             }
         },
         error: function(xhr, status, error) {
@@ -341,10 +341,10 @@
 /**
  * 关闭此对话框
  */
-TCompetition.close = function() {
-    parent.layer.close(window.parent.TCompetition.layerIndex);
+TQuestion.close = function() {
+    parent.layer.close(window.parent.TQuestion.layerIndex);
 }
-TCompetition.getCoursePackage = function (e) {
+TQuestion.getCoursePackage = function (e) {
     var oneId=$(e).val();
     console.log("门店id")
     console.log(oneId)
@@ -365,7 +365,9 @@
     ajax.set("typeId",oneId);
     ajax.start();
 };
-TCompetition.getCoursePackageConfig = function (e) {
+TQuestion.getCoursePackageConfig = function (e) {
+    var c1 = document.getElementById("c1");
+    var c2 = document.getElementById("c2");
     var oneId=$(e).val();
     console.log(oneId)
     var content = "<option value=''>请选择</option>";
@@ -373,15 +375,41 @@
         if(data!=null){
 
             $.each(data, function(k,v) {
-                content += "<option value='"+v.id+"'>"+v.classHours+"</option>";
+                content += "<option value='"+v.id+"'  data-cashPayment='"+v.cashPayment+"' data-playPaiCoin='"+v.playPaiCoin+"'>"+v.classHours+"</option>";
             });
             $("#courseTime").empty().append(content);
+        }else{
+            c1.style.display = "none";
+            c2.style.display = "none";
         }
     });
+    if (oneId == ""){
+        console.log("关闭");
+        c1.style.display = "none";
+        c2.style.display = "none";
+    }else{
+        console.log("展示")
+        c1.style.display = 'block'
+        c2.style.display = 'block'
+    }
     ajax.set("id",oneId);
     ajax.start();
 };
-TCompetition.twoChange = function (e) {
+TQuestion.getCoursePackagePrice = function (e) {
+    var c1 = document.getElementById("c1");
+    var c2 = document.getElementById("c2");
+    var oneId=$(e).val();
+    var selectElement = document.getElementById('courseTime');
+    var selectedOption = selectElement.options[selectElement.selectedIndex];
+    console.log("插入")
+    var cashPayment = selectedOption.getAttribute('data-cashpayment');
+    var playPaiCoin = selectedOption.getAttribute('data-playpaicoin');
+    console.log(cashPayment)
+    console.log(playPaiCoin)
+    $("#cashPayment").val(cashPayment);
+    $("#playPaiCoin").val(playPaiCoin);
+};
+TQuestion.twoChange = function (e) {
     var oneId=e;
     var content = "<option value=''>请选择</option>";
     var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
@@ -397,7 +425,7 @@
     ajax.start();
 };
 
-TCompetition.threeChange = function (e) {
+TQuestion.threeChange = function (e) {
     var oneId=$(e).val();
     var content1 = "<option value=''>请选择门店</option>";
     var ajax2=new $ax(Feng.ctxPath + "/cpPayment/getStore", function(data){
@@ -409,7 +437,7 @@
     ajax2.set("city",oneId);
     ajax2.start();
 };
-TCompetition.fourChange = function (e) {
+TQuestion.fourChange = function (e) {
     var content1 = "<option value=''>请选择门店</option>";
     var ajax2=new $ax(Feng.ctxPath + "/cpPayment/getStore", function(data){
         $.each(data, function(k,v) {
@@ -421,7 +449,7 @@
     ajax2.start();
 };
 
-TCompetition.getStudent = function () {
+TQuestion.getStudent = function () {
     var phone = $("#vipPhone").val();
     var phoneRegex = /^1[3456789]\d{9}$/;
     // 使用正则表达式进行验证
@@ -466,10 +494,9 @@
                             area: ['100%', '100%'], //宽高
                             fix: false, //不固定
                             maxmin: true,
-                            // todo 写用户管理路径
                             content: Feng.ctxPath + '/appUser/add'
                         });
-                        this.layerIndex = index;
+                        layer.closeAll('page');
                     },
                 });
             }else{
@@ -506,7 +533,7 @@
                                     // todo 写用户管理路径
                                     content: Feng.ctxPath + '/appUser/addStudent/'+appUserId
                                 });
-                                this.layerIndex = index;
+                                layer.closeAll('page');
                             },
                         });
                     }
@@ -520,7 +547,7 @@
                         if (option.text === province) {
                             option.selected = true;
                             console.log(option.value)
-                            TCompetition.twoChange(option.value);
+                            TQuestion.twoChange(option.value);
                             break; // 找到匹配的选项后,可以选择停止遍历
                         }
                     }
@@ -532,7 +559,7 @@
                         if (option.text === city) {
                             option.selected = true;
                             c =  option.text;
-                            TCompetition.fourChange(c)
+                            TQuestion.fourChange(c)
 
                             break; // 找到匹配的选项后,可以选择停止遍历
                         }
@@ -548,11 +575,11 @@
 
 };
 
-TCompetition.freeze = function () {
+TQuestion.freeze = function () {
     if (this.check()) {
         var ajax = new $ax(Feng.ctxPath + "/tShop/freeze", function (data) {
             Feng.success("冻结成功!");
-            TCompetition.table.refresh();
+            TQuestion.table.refresh();
         }, function (data) {
             Feng.error("冻结失败!" + data.responseJSON.message + "!");
         });
@@ -560,7 +587,7 @@
         ajax.start();
     }
 };
-TCompetition.unfreeze = function () {
+TQuestion.unfreeze = function () {
     if (this.check()) {
         var selected = $('#' + this.id).bootstrapTable('getSelections');
         console.log("看看选择")
@@ -582,7 +609,7 @@
             data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
             success: function(response) {
                 Feng.success("支付成功!");
-                TCompetition.table.refresh();
+                TQuestion.table.refresh();
             },
             error: function(xhr, status, error) {
                 var errorMessage = xhr.responseText ? xhr.responseText : "上架失败!";
@@ -591,13 +618,13 @@
         });
     }
 };
-TCompetition.reload = function () {
+TQuestion.reload = function () {
     if (this.check()) {
         let id = this.seItem.id
         var operation = function(){
             var ajax = new $ax(Feng.ctxPath + "/tCity/pwd", function (data) {
                 Feng.success("重置成功!");
-                TCompetition.table.refresh();
+                TQuestion.table.refresh();
             }, function (data) {
                 Feng.error("重置失败!" + data.responseJSON.message + "!");
             });
@@ -609,7 +636,7 @@
 
 };
 
-TCompetition.carInsurance = function () {
+TQuestion.carInsurance = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -617,7 +644,7 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/TCompetition/carInsurance?carId=' + TCompetition.seItem.id
+            content: Feng.ctxPath + '/TQuestion/carInsurance?carId=' + TQuestion.seItem.id
         });
         this.layerIndex = index;
     }
@@ -628,7 +655,7 @@
 /**
  * 查询车辆管理列表
  */
-TCompetition.search = function () {
+TQuestion.search = function () {
     var queryData = {};
     if ($('#pCode option:selected').text()!="全部"){
         queryData['province'] = $('#pCode option:selected').text();
@@ -642,10 +669,10 @@
     queryData['payStatus'] = $("#state").val();
     queryData['payUser'] = $("#payUser").val();
     queryData['payStudent'] = $("#payStudent").val();
-    TCompetition.table.refresh({query: queryData});
+    TQuestion.table.refresh({query: queryData});
 };
 
-TCompetition.resetSearch = function () {
+TQuestion.resetSearch = function () {
     $("#pCode").val("");
     $("#cCode").val("");
     $("#coursePackage").val("");
@@ -653,14 +680,14 @@
     $("#state").val("");
     $("#payUser").val("");
     $("#payStudent").val("");
-    TCompetition.search();
+    TQuestion.search();
 };
 
 $(function () {
-    var defaultColunms = TCompetition.initColumn();
-    var table = new BSTable(TCompetition.id, "/cpPayment/listAll", defaultColunms);
+    var defaultColunms = TQuestion.initColumn();
+    var table = new BSTable(TQuestion.id, "/cpPayment/listAll", defaultColunms);
     table.setPaginationType("client");
-    TCompetition.table = table.init();
+    TQuestion.table = table.init();
 });
 
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
index 0620273..f4ee71b 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
@@ -102,6 +102,48 @@
     parent.layer.close(window.parent.TCompetition.layerIndex);
 }
 
+TCarInfoDlg.oneChange9 = function (e) {
+    console.log(111)
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tShop/getCityYys", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择市</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
+            });
+            $("#cCode1").empty().append(content);
+            $("#cCode").empty().append(content);
+        }
+    });
+    ajax.set("province",oneId);
+    ajax.start();
+};
+TCarInfoDlg.oneChangeNext9 = function (e) {
+    console.log(111)
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tShop/getStoresYys", function(data){
+        if(data!=null){
+            if(language==1){
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.id+"'>"+v.name+"</option>";
+            });
+            $("#shopId").empty().append(content);
+        }
+    });
+    ajax.set("cityCode",oneId);
+    ajax.start();
+}
 /**
  * 收集数据
  */
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCoupon.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCoupon.js
index 0795f36..7429f89 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCoupon.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCoupon.js
@@ -49,6 +49,11 @@
             formatter: function (value, row, index) {
                 return {1: "待审核", 2: "已通过",3: "已拒绝"}[value]
             }},
+        {title: '发布类型', field: 'publisherType', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row, index) {
+                return {1: "运营商", 2: "平台",3: "门店"}[value]
+            }
+        },
     ];
 };
 
@@ -88,10 +93,18 @@
 TCoupon.openChange = function () {
     if (this.check()){
         let size = TCoupon.seItem.size
+
         if(size>0){
             Feng.info("没有该权限");
             return;
         }
+        let publisherType = TCoupon.seItem.publisherType;
+        if ($("#objectType").val()==2){
+            if(publisherType != 1){
+                Feng.info("不能操作平台添加的优惠券");
+                return;
+            }
+        }
         let id = TCoupon.seItem.id
         let name = TCoupon.seItem.name
         let quantityIssued = TCoupon.seItem.quantityIssued
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java
index 88df77e..e0762a9 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java
@@ -32,6 +32,8 @@
 
     @Override
     public List<Map<String, Object>> orderlist(BookingQuery bookingQuery) {
-        return this.baseMapper.orderlist(bookingQuery);
+        List<Map<String, Object>> orderlist = this.baseMapper.orderlist(bookingQuery);
+
+        return orderlist;
     }
 }

--
Gitblit v1.7.1