From a1d261d6c92c38d9e496e11d1bc224ecc1d34798 Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期二, 14 十一月 2023 09:14:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html                                           |    1 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java                   |    3 
 cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml                                              |   20 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java       |   49 ++
 cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java                              |    3 
 cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml                                                |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_one.html                                 |    7 
 cloud-server-management/src/main/resources/mapper/UserMapper.xml                                                      |   30 +
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js                          |    1 
 cloud-server-activity/src/main/resources/mapper/CouponMapper.xml                                                      |    4 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_edit.html                                       |   11 
 cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js                                  |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java                                 |    5 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserQuery.java                                |   23 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherTwo.js                                  |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java                                 |   52 ++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_device.html                               |   41 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java       |   34 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetitionUser.html                        |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java               |    3 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage.html                   |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html                                  |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java                |   16 
 cloud-server-management/src/main/webapp/static/modular/system/tGoods/TStoreInfo.js                                    |    1 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tIntegral/TIntegral.html                                  |    1 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java            |  173 ++++--
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop.html                                          |    2 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js                                  |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java                           |    3 
 cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml                                        |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html                             |    1 
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java                   |    5 
 cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js                        |   25 
 cloud-server-management/src/main/webapp/static/modular/system/user/user.js                                            |  138 +---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/UserServiceImpl.java                   |    7 
 cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java                           |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java                |   45 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html                 |   44 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html                                  |    1 
 cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java                                  |   20 
 cloud-server-management/src/main/webapp/static/modular/system/tIntegral/tIntegral.js                                  |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_add.html                                        |   26 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js                                          |   20 
 cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js                             |    5 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java                      |    2 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js                                     |   11 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user.html                                            |   31 +
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage_info.js              |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java            |   55 +
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js                     |   11 
 cloud-server-management/src/main/java/com/dsh/course/mapper/UserMapper.java                                           |    5 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js                                           |   18 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java                               |   32 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage_info.html              |   57 +
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage.js                   |    8 
 cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml                                                     |    3 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java                     |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java         |   64 ++
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java              |   45 +
 cloud-server-management/src/main/webapp/static/modular/system/user/user_info.js                                       |  101 +++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html                                   |    7 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_pay.html                                    |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html                                    |    8 
 cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js                                  |    5 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java                  |   15 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java               |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html                      |   26 +
 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java                      |   14 
 69 files changed, 1,044 insertions(+), 345 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 6bd2591..410d1af 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
@@ -121,11 +121,29 @@
     @RequestMapping("/base/appUser/listAll")
     public List<QueryAppUserVO> listAll(@RequestBody QueryAppUser query){
         List<QueryAppUserVO> queryAppUserVOS = appUserService.listAll(query);
+        ArrayList<QueryAppUserVO> res = new ArrayList<>();
+
         if (query.getUserIds()!=null && query.getUserIds().size()!=0){
             List<QueryAppUserVO> queryAppUserVOS1 = appUserService.listAll1(query);
             queryAppUserVOS.addAll(queryAppUserVOS1);
         }
-        return queryAppUserVOS.stream().distinct().collect(Collectors.toList());
+        List<QueryAppUserVO> collect = queryAppUserVOS.stream().distinct().collect(Collectors.toList());
+        for (QueryAppUserVO vo : collect) {
+            // 会员到期时间小于当前时间或者会员到期时间为null 则会员过期
+            if (vo.getVipEndTime()!=null && vo.getVipEndTime().after(new Date())){
+                vo.setIsVip(1);
+            }else{
+                vo.setIsVip(0);
+            }
+            if (query.getIsVip() != null && (!query.getIsVip().equals("")) ){
+                if (vo.getIsVip() == query.getIsVip()){
+                    res.add(vo);
+                }
+            }else{
+                res.add(vo);
+            }
+        }
+        return res;
     }
 
     /**
diff --git a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
index 0dfafd5..67c9d60 100644
--- a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
+++ b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
@@ -63,9 +63,6 @@
             <if test="query.phone!=null and query.phone!= ''">
                 and t1.phone LIKE concat('%',#{query.phone},'%')
             </if>
-            <if test="query.isVip!=null and query.isVip!= ''">
-                and t1.isVip = #{query.isVip}
-            </if>
             <if test="query.salesmanUser!=null and query.salesmanUser!= ''">
                 and t1.salesmanUserId = #{query.salesmanUser}
             </if>
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 e0804f2..e8628d0 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
@@ -609,10 +609,7 @@
                     case 1:
                         coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints()));
                         break;
-                    case 2:
-                        coupon.setCash(dataVo.getRequiredCash());
-                        coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints()));
-                        break;
+
                     case 3:
                         coupon.setCash(dataVo.getRequiredCash());
                         break;
diff --git a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
index a7cc8b1..3a9e973 100644
--- a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
@@ -164,7 +164,9 @@
                userPopulation,
                quantityIssued,
                pickUpQuantity,
-               auditStatus
+               auditStatus,
+        publisherType,
+        cityManagerId
         from t_coupon
         where auditStatus != 2
         <if test="name != null">
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 c10e832..0dcb55c 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
@@ -2,6 +2,7 @@
 
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.poi.excel.ExcelUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -33,7 +34,9 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.CompletionService;
@@ -708,6 +711,13 @@
             return null;
         }
     }
+    @PostMapping("/base/competition/getPeoples")
+    @ResponseBody
+    public  List<CompetitionUser> getPeoples(@RequestBody GetPeopleQuery getPeopleQuery){
+        List<CompetitionUser> list = participantService.getPeoples(
+                getPeopleQuery.getId(),getPeopleQuery.getState());
+        return list;
+    }
 
 
 
@@ -839,9 +849,7 @@
         map.put("monthsUser",monthsUser);
 
         return map;
-
-
-
     }
+
 }
 
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java
index bf45dec..55f92c1 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java
@@ -7,10 +7,13 @@
 import com.dsh.competition.feignclient.model.CompetitionUser;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @author zhibing.pu
  * @date 2023/7/6 16:51
  */
 public interface ParticipantMapper extends BaseMapper<Participant> {
     Page<CompetitionUser> getPeopleFromId(@Param("participantPage") Page<UserCompetition> participantPage, @Param("id") Integer id, @Param("state") Integer state);
+    List<CompetitionUser> getPeoples(@Param("id") Integer id, @Param("state") Integer state);
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java
index 4d48a26..9534d1a 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java
@@ -64,4 +64,6 @@
     void saveParticipant(SaveParticipant saveParticipant) throws Exception;
 
     Page<CompetitionUser> getPeopleFromId(Page<UserCompetition> participantPage, Integer id, Integer state);
+
+    List<CompetitionUser> getPeoples(Integer id, Integer state);
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
index bc0760b..f312365 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
@@ -257,4 +257,9 @@
     public Page<CompetitionUser> getPeopleFromId(Page<UserCompetition> participantPage, Integer id, Integer state) {
         return this.baseMapper.getPeopleFromId(participantPage,id,state);
     }
+
+    @Override
+    public List<CompetitionUser> getPeoples(Integer id, Integer state) {
+        return this.baseMapper.getPeoples(id,state);
+    }
 }
diff --git a/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml b/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml
index 5c7d873..6a0430d 100644
--- a/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml
+++ b/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml
@@ -2,7 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.dsh.competition.mapper.ParticipantMapper">
     <select id="getPeopleFromId" resultType="com.dsh.competition.feignclient.model.CompetitionUser">
-        select t2.name,t2.gender sex,t2.phone ,t2.idcard idCard ,t3.payStatus state  from t_user_competition t1 left join t_participant t2 on t1.participantId = t2.id left join t_payment_competition t3 on t1.paymentCompetitionId = t3.id
+        select t2.id, t2.name,t2.gender sex,t2.phone ,t2.idcard idCard ,t3.payStatus state
+         from t_user_competition t1 left join t_participant t2 on t1.participantId = t2.id
+          left join t_payment_competition t3 on t1.paymentCompetitionId = t3.id
         where t1.competitionId =#{id} and t2.id is not null and t3.id is not null
         <if test="state !=null and state !='' and state ==1">
             and t3.payStatus in (1,2)
@@ -10,8 +12,18 @@
         <if test="state !=null and state !='' and state ==3">
             and t3.payStatus =3
         </if>
-
-
-
     </select>
+    <select id="getPeoples" resultType="com.dsh.competition.feignclient.model.CompetitionUser">
+            select t2.id, t2.name,t2.gender sex,t2.phone ,t2.idcard idCard ,t3.payStatus state
+            from t_user_competition t1 left join t_participant t2 on t1.participantId = t2.id
+            left join t_payment_competition t3 on t1.paymentCompetitionId = t3.id
+            where t1.competitionId =#{id} and t2.id is not null and t3.id is not null
+            <if test="state !=null and state !='' and state ==1">
+                and t3.payStatus in (1,2)
+            </if>
+            <if test="state !=null and state !='' and state ==3">
+                and t3.payStatus =3
+            </if>
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java
index d7b3b06..912aa6a 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java
@@ -37,7 +37,7 @@
     @PostMapping("/coursePackageDiscount/queryCoursePackageDiscount")
     public List<TCoursePackageDiscount> queryCoursePackageDiscount(@RequestBody Integer coursePackagePaymentConfigId){
         return coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfigId)
-                .eq("auditStatus", 2));
+                );
     }
 
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
index 15115b8..1452543 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
@@ -381,6 +381,8 @@
             for (int i = 0; i < tCoursePackageDiscounts.size(); i++) {
                 if(tCoursePackageDiscounts.get(i).getType()==1){
                     type += "会员折扣、";
+                }else if(tCoursePackageDiscounts.get(i).getType()==2){
+                    type += "续课优惠、";
                 }else if(tCoursePackageDiscounts.get(i).getType()==3){
                     type += "限时折扣、";
                 }else if(tCoursePackageDiscounts.get(i).getType()==4){
@@ -404,8 +406,12 @@
         }
         List<DiscountList> discountLists = this.baseMapper.queryDiscountList(discountListPage, queryDiscountList.getPCode(), queryDiscountList.getCCode(), queryDiscountList.getName(), queryDiscountList.getType(), queryDiscountList.getIds());
         for (DiscountList discountList : discountLists) {
-            List<TCoursePackageDiscount> tCoursePackageDiscounts = this.baseMapper.selectList(new LambdaQueryWrapper<TCoursePackageDiscount>().eq(TCoursePackageDiscount::getCoursePackageId, discountList.getCourseId()).eq(TCoursePackageDiscount::getAuditStatus,2).orderByAsc(TCoursePackageDiscount::getType));
-            long count = tCoursePackageDiscounts.stream().filter(e -> e.getStatus().equals(2)).count();
+            List<TCoursePackageDiscount> tCoursePackageDiscounts = this.baseMapper.selectList
+                    (new LambdaQueryWrapper<TCoursePackageDiscount>()
+                            .eq(TCoursePackageDiscount::getCoursePackageId,
+                                    discountList.getCourseId())
+                            .orderByAsc(TCoursePackageDiscount::getType));
+            long count = tCoursePackageDiscounts.stream().count();
             if(count>0){
                 discountList.setStatus(2);
             }else {
@@ -415,7 +421,10 @@
             for (int i = 0; i < tCoursePackageDiscounts.size(); i++) {
                 if(tCoursePackageDiscounts.get(i).getType()==1){
                     type += "会员折扣、";
-                }else if(tCoursePackageDiscounts.get(i).getType()==3){
+                }else if(tCoursePackageDiscounts.get(i).getType()==2){
+                    type += "续课优惠、";
+                }
+                else if(tCoursePackageDiscounts.get(i).getType()==3){
                     type += "限时折扣、";
                 }else if(tCoursePackageDiscounts.get(i).getType()==4){
                     type += "赠送课时、";
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml
index c2ffe3c..ab53ac6 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml
@@ -19,7 +19,7 @@
         select t1.id,t1.type,t1.status,t2.province pName,t2.city cName,t2.name,t2.storeId,t2.id courseId from t_course_package_discount t1 left join  t_course_package t2 on t1.coursePackageId = t2.id
         where t2.storeId in <foreach collection="ids" close=")" item="id" open="(" separator=",">
         #{id}
-    </foreach> and t1.auditStatus =2
+    </foreach>
         <if test="pCode !=null and pCode !=''">
             and t2.provinceCode =#{pCode}
         </if>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml
index d15825e..80d6765 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml
@@ -86,7 +86,7 @@
             </foreach>
         </if>
         <if test="null != item.name and '' != item.name">
-            and a.name line CONCAT('%', #{item.name}, '%')
+            and a.name like CONCAT('%', #{item.name}, '%')
         </if>
         <if test="null != item.status">
             and a.status = #{item.status}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java
index 79b616d..c652760 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java
@@ -43,7 +43,8 @@
     void cancel(Integer id);
     @PostMapping("/base/competition/getPeopleFromId")
     Page<CompetitionUser> getPeopleFromId(GetPeopleQuery getPeopleQuery);
-
+    @PostMapping("/base/competition/getPeoples")
+    List<CompetitionUser> getPeoples(@RequestBody GetPeopleQuery getPeopleQuery);
     @PostMapping("/base/competition/listUser")
     Page<CompetitionUser> listUser(CompetitionUserQuery competitionUserQuery);
 
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java
index 790804d..4cc2f53 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java
@@ -136,4 +136,8 @@
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
 
     private Date endTime;
+    /**
+     * 扣除课时数
+     */
+    private Integer needNum;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/UserMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/UserMapper.java
index d9130f7..9383906 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/mapper/UserMapper.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/UserMapper.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dsh.guns.core.dataScope.DataScope;
 import com.dsh.guns.modular.system.model.User;
+import com.dsh.guns.modular.system.model.UserListVO;
+import com.dsh.guns.modular.system.model.UserQuery;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -61,4 +63,7 @@
                                              @Param("deptid") Integer deptid,
                                              @Param("objectType") Integer objectType,
                                              @Param("objectId") Integer objectId);
+
+    List<UserListVO> searchUsers(@Param("query") UserQuery userQuery);
+
 }
\ No newline at end of file
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 6ec1b96..fbac453 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
@@ -199,7 +199,6 @@
                     SimpleDateFormat format = new SimpleDateFormat(timeFrameStart);
                     SimpleDateFormat format1 = new SimpleDateFormat(timeFrameEnd);
                     try {
-
                         // 判断当日时间是否能享受到折扣
                         String startTime = jsonObject.getString("startTime");
                         String endTime = jsonObject.getString("endTime");
@@ -239,7 +238,6 @@
         }
         // 判断三个折扣 谁所需支付金额最少
         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)) {
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 4921c89..be18b91 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
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.feignClient.account.model.TAppUser;
 import com.dsh.course.feignClient.competition.CompetitionClient;
 import com.dsh.course.feignClient.competition.model.*;
 import com.dsh.guns.config.UserExt;
@@ -18,7 +19,9 @@
 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.ExcelUtil;
 import com.dsh.guns.modular.system.util.OBSUploadUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -28,11 +31,15 @@
 import org.springframework.web.bind.annotation.ResponseBody;
 import sun.rmi.runtime.Log;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -56,7 +63,61 @@
     @Autowired
     private ICityService cityService;
 
+    /**
+     * 导出赛事已报名用户列表
+     */
 
+    @RequestMapping(value = "/export")
+    @ResponseBody
+    public void exportUserInfo(Integer id, Integer state, HttpServletResponse response) {
+        try {
+            Competition byId = competitionClient.queryById(id);
+            String name = byId.getName();
+            Date date = new Date();
+            DateFormat format = new SimpleDateFormat("yyyyMMdd");
+            String time1 = format.format(date);
+            String fileName =name+"报名信息.xls";
+            String[] title = new String[] {"姓名","性别","联系电话","身份证号","状态"};
+            GetPeopleQuery query = new GetPeopleQuery();
+            query.setId(id);
+            query.setState(state);
+            List<CompetitionUser> list = competitionClient.getPeoples(query);
+            String[][] values = new String[list.size()][];
+            for (int i = 0; i < list.size(); i++) {
+                CompetitionUser d = list.get(i);
+                values[i] = new String[title.length];
+                values[i][0] = d.getName();
+                Integer sex = d.getSex();
+                if(Objects.nonNull(sex)){
+                    if(1 == sex){
+                        values[i][1] = "男";
+                    }else if(2 == sex){
+                        values[i][1] = "女";
+                    }
+                }else {
+                    values[i][1] = "未知";
+                }
+                values[i][2] = d.getPhone();
+                values[i][3] = d.getIdCard();
+                Integer state1 = d.getState();
+                if(1 == state1){
+                    values[i][4] = "正常";
+                }else if(2 == state1){
+                    values[i][4] = "冻结";
+                }else {
+                    values[i][4] = "删除";
+                }
+            }
+            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
+            ExcelUtil.setResponseHeader(response, fileName);
+            OutputStream os = response.getOutputStream();
+            wb.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
 
     /**
@@ -257,7 +318,8 @@
     public Object listUser(@PathVariable Integer id,Integer state) {
         try {
             Page<Object> page = new PageFactory<>().defaultPage();
-            Page<CompetitionUser> data =   competitionClient.getPeopleFromId(new GetPeopleQuery(page.getSize(),page.getCurrent(),id,state));
+            Page<CompetitionUser> data =   competitionClient.getPeopleFromId
+                    (new GetPeopleQuery(page.getSize(),page.getCurrent(),id,state));
             return  super.packForBT(data);
         }catch (Exception e){
             e.printStackTrace();
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java
index b114e0e..5baf40a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java
@@ -1,6 +1,7 @@
 package com.dsh.guns.modular.system.controller.code;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dsh.course.feignClient.activity.CouponClient;
 import com.dsh.course.feignClient.activity.model.Coupon;
@@ -10,8 +11,12 @@
 import com.dsh.guns.core.common.constant.factory.PageFactory;
 import com.dsh.guns.core.exception.GunsException;
 import com.dsh.guns.core.util.ToolUtil;
+import com.dsh.guns.modular.system.model.TOperator;
+import com.dsh.guns.modular.system.model.TStore;
 import com.dsh.guns.modular.system.model.User;
+import com.dsh.guns.modular.system.service.IStoreService;
 import com.dsh.guns.modular.system.service.IUserService;
+import com.dsh.guns.modular.system.service.TOperatorService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -39,6 +44,10 @@
     private CouponClient client;
     @Autowired
     private IUserService userService;
+    @Autowired
+    private TOperatorService operatorService;
+    @Autowired
+    private IStoreService storeService;
 
     /**
      * 优惠券审核列表页
@@ -72,7 +81,45 @@
         ofSearch.setDistributionMethod(distributionMethod);
         ofSearch.setUserPopulation(userPopulation);
         ofSearch.setAuditStatus(auditStatus);
-        return client.getCouponExamineListOfSearch(ofSearch);
+        List<Map<String, Object>> res = client.getCouponExamineListOfSearch(ofSearch);
+        for (Map<String, Object> re : res) {
+            if (re.get("publisherType")!=null){
+
+            }
+            switch (Integer.valueOf(re.get("publisherType").toString())){
+                case 1:
+                    // 运营商添加
+                    if (re.get("cityManagerId")!=null){
+                        TOperator one = operatorService.getOne(new QueryWrapper<TOperator>()
+                                .eq("id", Integer.valueOf(re.get("cityManagerId").toString())));
+                        if (one!=null){
+                            User id = userService.getOne(new QueryWrapper<User>().eq("id", one.getUserId()));
+                            if (id!=null){
+                                re.put("account",one.getName()+"-"+id.getPhone());
+                            }
+                        }
+                    }
+                    break;
+                case 2:
+                    re.put("account","平台");
+                    // 平台添加
+                    break;
+                case 3:
+                    // 门店添加
+                    if (re.get("cityManagerId")!=null){
+                        TStore one = storeService.getOne(new QueryWrapper<TStore>()
+                                .eq("id", Integer.valueOf(re.get("cityManagerId").toString())));
+                        if (one!=null){
+                            User id = userService.getOne(new QueryWrapper<User>().eq("id", one.getStoreStaffId()));
+                            if (id!=null){
+                                re.put("account",one.getName()+"-"+id.getPhone());
+                            }
+                        }
+                    }
+                    break;
+            }
+        }
+        return res;
     }
 
     /**
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 f2c32b3..65f9901 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
@@ -429,7 +429,6 @@
         return PREFIX + "coursePackageDiscount.html";
     }
 
-
     /**
      * 跳转到报名列表页
      * @param model
@@ -610,8 +609,32 @@
             model.addAttribute("auditStatus", tCoursePackage.getAuditStatus());
 
         model.addAttribute("authRemark", tCoursePackage.getAuthRemark());
+        String classStartTime = tCoursePackage.getClassStartTime();
+        String classEndTime = tCoursePackage.getClassEndTime();
+        if (tCoursePackage.getStartTime()!=null) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String dateString = sdf.format(tCoursePackage.getStartTime());
+            String dateString1 = sdf.format(tCoursePackage.getEndTime());
+            model.addAttribute("holi", dateString + " - " + dateString1);
+        }
+        String[] split1 = classStartTime.split(",");
+        String[] split2 = classEndTime.split(",");
 
-        model.addAttribute("classTime", tCoursePackage.getClassStartTime() + ":00 - " + tCoursePackage.getClassEndTime() + ":00");
+        List<String> listtime = new ArrayList<>();
+
+        for (int i = 0; i < split1.length; i++) {
+            String o = split1[i]+"-"+split2[i];
+            listtime.add(o);
+        }
+
+
+        model.addAttribute("time1",listtime.remove(0));
+        if (listtime.size()!=0) {
+            model.addAttribute("times", listtime);
+        }
+        model.addAttribute("classTime",
+                tCoursePackage.getClassStartTime() + ":00 - "
+                        + tCoursePackage.getClassEndTime() + ":00");
         String[] split = tCoursePackage.getClassWeeks().split(";");
         List<String> list5 = Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日");
         List<Map<String, Object>> classWeeks = new ArrayList<>();
@@ -648,7 +671,8 @@
             model.addAttribute("playPaiCoin", coursePackagePaymentConfig.getPlayPaiCoin() == 0 ? false : true);}
         model.addAttribute("coursePackagePaymentConfig", list4.remove(0));
         model.addAttribute("coursePackagePaymentConfigs", list4);
-
+        Integer type = tCoursePackage.getType();
+        model.addAttribute("type",type);
         return PREFIX + "examineCoursePackage_info.html";
     }
 
@@ -663,7 +687,6 @@
     @ResponseBody
     @PostMapping("/queryCity")
     public List<Map<String, Object>> queryCity(String code){
-
         Integer objectType = UserExt.getUser().getObjectType();
         Integer objectId = UserExt.getUser().getObjectId();
         String cityCode = null;
@@ -865,7 +888,8 @@
         if(objectType == 3) {// 门店
             storeIds.add(objectId);
         }
-        Page<Map<String, Object>> mapPage = coursePackageService.queryCoursePackageLists(provinceCode, cityCode, coursePackageTypeId, storeIds, name, status, state);
+        Page<Map<String, Object>> mapPage = coursePackageService.queryCoursePackageLists(provinceCode,
+                cityCode, coursePackageTypeId, storeIds, name, status, state);
         return super.packForBT(mapPage);
     }
 
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 ce5efba..ebdf705 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
@@ -143,8 +143,7 @@
     private CoursePackageDiscountClient coursePackageDiscountClient;
     @RequestMapping("/info")
     public String info( Integer id, Model model) {
-        TCoursePackage tCoursePackage1 = courseClient.queryByDiscountId(id);
-        TCoursePackage tCoursePackage = coursePackageService.queryById(tCoursePackage1.getId());
+        TCoursePackage tCoursePackage = coursePackageService.queryById(id);
         model.addAttribute("item", tCoursePackage);
         List<CoursePackagePaymentConfig> list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id);
         List<Map<String, Object>> list = new ArrayList<>();
@@ -168,25 +167,19 @@
             map.put("coursePackageDiscount", tCoursePackageDiscounts);
             list.add(map);
         }
+        model.addAttribute("role",UserExt.getUser().getObjectType());
+        model.addAttribute("type",tCoursePackage.getType());
         model.addAttribute("coursePackagePaymentConfig", JSON.toJSONString(list));
         return PREFIX + "coursePackageDiscount.html";
     }
     @RequestMapping("/infoOne")
     public String infoOne( Integer id, Model model) {
-        Integer state = courseClient.queryDiscountById(id);
-        if(state==1){
-            model.addAttribute("stateStr","待审核");
-            model.addAttribute("state",1);
-        }else {
-            model.addAttribute("stateStr","未通过");
-            model.addAttribute("state",3);
-        }
-
-        TCoursePackage tCoursePackage1 = courseClient.queryByDiscountId(id);
-        TCoursePackage tCoursePackage = coursePackageService.queryById(tCoursePackage1.getId());
+        TCoursePackage tCoursePackage = coursePackageService.queryById(id);
         model.addAttribute("item", tCoursePackage);
         List<CoursePackagePaymentConfig> list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id);
         List<Map<String, Object>> list = new ArrayList<>();
+        // 拒绝理由
+        StringBuilder reasons = new StringBuilder("");
         for (CoursePackagePaymentConfig coursePackagePaymentConfig : list4) {
             if(coursePackagePaymentConfig.getCashPayment() == 0){
                 continue;
@@ -203,11 +196,45 @@
             }
             map.put("payment",  payment);
             map.put("cashPayment", coursePackagePaymentConfig.getCashPayment());
-            List<TCoursePackageDiscount> tCoursePackageDiscounts = coursePackageDiscountClient.queryCoursePackageDiscountOne(coursePackagePaymentConfig.getId());
+            List<TCoursePackageDiscount> tCoursePackageDiscounts = coursePackageDiscountClient.queryCoursePackageDiscount(coursePackagePaymentConfig.getId());
+            for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
+                if (tCoursePackageDiscount.getAuditStatus()==3){
+                    reasons.append(tCoursePackageDiscount.getAuditRemark()+",");
+                    model.addAttribute("type1",3);
+                }else{
+                    model.addAttribute("type1",-1);
+                }
+            }
             map.put("coursePackageDiscount", tCoursePackageDiscounts);
             list.add(map);
         }
+        model.addAttribute("role",UserExt.getUser().getObjectType());
+        Integer type1 = tCoursePackage.getType();
+        // 审核状态
+        StringBuilder stringBuilder = new StringBuilder("");
+
+        switch (type1){
+            case 1:
+                stringBuilder.append("待审核");
+                break;
+            case 2:
+                stringBuilder.append("已通过");
+                break;
+            case 3:
+                stringBuilder.append("未通过");
+                break;
+        }
+        model.addAttribute("type",stringBuilder);
+
+        String string = reasons.toString();
+        if (!string.equals("")){
+            String substring = string.substring(0, string.length() - 1);
+            model.addAttribute("reasons", substring);
+        }else{
+            model.addAttribute("reasons", "");
+        }
         model.addAttribute("coursePackagePaymentConfig", JSON.toJSONString(list));
+
         return PREFIX1 + "coursePackageDiscount.html";
     }
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java
index 2deb31a..0dfcc25 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java
@@ -649,6 +649,8 @@
     public String payOfDetails(@PathVariable(value = "id") Integer id,Model model) {
         System.out.println(id);
         model.addAttribute("id",id);
+        Coupon coupon = client.queryCouponById(id);
+        model.addAttribute("type",coupon.getType());
         return PREFIX + "TGoods_pay.html";
     }
     /**
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 9092db9..9e87d2c 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
@@ -86,6 +86,27 @@
     private IUserService userService;
 
 
+    @RequestMapping("/tShop_addDevice/{id}")
+    public String addDevice(@PathVariable("id") Integer id,Model model) {
+        // 查询门店下的所有场地
+        List<TSite> list = siteService.list(new QueryWrapper<TSite>().eq("storeId", id));
+        // 门店id
+        model.addAttribute("id",id);
+        model.addAttribute("list",list);
+        return PREFIX + "TShop_add_device.html";
+    }
+    @RequestMapping("/addDevice")
+    public Object addDevice(Integer id,Integer siteId,String device) {
+        HashMap<String, String> map = new HashMap<>();
+        map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
+        map.put("space_id",siteId+"");
+        map.put("device_id",device);
+        map.put("region_id",id.toString());
+        // 添加门禁
+        String s1 = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addDevice", map);
+        return SUCCESS_TIP;
+    }
+
     /**
      * 跳转到车辆管理首页
      */
@@ -548,20 +569,6 @@
             System.out.println(result);
 
 
-
-            for (String s : tStore.getIds().split(",")) {
-                HashMap<String, String> map = new HashMap<>();
-                map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
-                map.put("space_id",tStore.getId()+"");
-                map.put("device_id",s);
-                map.put("region_id",tSite.getId().toString());
-                // 添加门禁
-                String s1 = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addDevice", map);
-                System.out.println(s1);
-            }
-
-
-
             return new SuccessTip<>();
         }catch (Exception e){
             e.printStackTrace();
@@ -969,13 +976,14 @@
     }
     @RequestMapping(value = "/addConfig")
     @ResponseBody
-    public Object addConfig(String name,Integer id) {
+    public Object addConfig(String name,Integer id,Integer sort) {
         try {
             List<TStoreOtherConfig> list = storeOtherConfigService.list();
             if(list.size()>0){
                 TStoreOther tStoreOther = new TStoreOther();
                 tStoreOther.setName(name);
                 tStoreOther.setStoreId(id);
+                tStoreOther.setSort(sort);
                 storeOtherService.save(tStoreOther);
 
                 // 找出temp表数据
@@ -1000,12 +1008,11 @@
     }
     @RequestMapping(value = "/addConfig1")
     @ResponseBody
-    public Object addConfig1(String name,Integer id) {
+    public Object addConfig1(String name,Integer id,Integer sort) {
         try {
             TStoreOther byId = storeOtherService.getById(id);
-            byId.setName(
-                    name
-            );
+            byId.setName(name);
+            byId.setSort(sort);
             storeOtherService.updateById(byId);
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
index 78850fe..90d1e05 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -477,10 +477,10 @@
         HashMap<String, String> map = new HashMap<>();
         map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
         map.put("name",site.getName());
-        map.put("space_id",site.getStoreId().toString());
-        map.put("area_id",integer1.toString());
-        String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpaceArea", map);
-
+        map.put("space_id",site.getId().toString());
+        map.put("area_id",store.getId().toString());
+        String s = HttpRequestUtil.postRequest
+                ("https://try.daowepark.com/v7/user_api/general/addSpaceArea", map);
         // 添加门禁
         JSONObject jsonObject = JSONObject.parseObject(s);
         JSONObject data = jsonObject.getJSONObject("data");
@@ -489,19 +489,15 @@
             for (String s1 : site.getIds().split(",")) {
                 HashMap<String, String> map1 = new HashMap<>();
                 map1.put("sign", "0DB011836143EEE2C2E072967C9F4E4B");
-                map1.put("space_id", site.getStoreId() + "");
+                map1.put("space_id", site.getId() + "");
                 map1.put("device_id", s1);
-                map1.put("region_id", integer1 + "");
+                map1.put("region_id", store.getId().toString() + "");
                 String s2 = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addDevice", map1);
                 System.out.println("添加闸机:" + s2);
             }
         }
-
-
         return ResultUtil.success("添加成功");
     }
-
-
     /**
      *  编辑场地管理
      */
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 713a533..7c8260e 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
@@ -414,7 +414,7 @@
 
 
 
-System.out.println("---------------------------"+gameConfigList);
+        System.out.println("---------------------------"+gameConfigList);
         ballClient.saveConfig( gameConfigList);
         return null;
     }
@@ -1137,7 +1137,6 @@
     public String yuyueadd(Model model) {
         Integer objectType = UserExt.getUser().getObjectType();
         Integer objectId = UserExt.getUser().getObjectId();
-
         String cityCode = null;
         if(objectType == 2){//城市管理员
             // 获取到这个运营商下面的所有门店
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
index 0664128..bf7ce4a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.crypto.SecureUtil;
 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.mapper.UserMapper;
 import com.dsh.guns.config.UserExt;
@@ -22,11 +23,13 @@
 import com.dsh.guns.core.util.SinataUtil;
 import com.dsh.guns.modular.system.controller.util.MD5;
 import com.dsh.guns.modular.system.factory.UserFactory;
-import com.dsh.guns.modular.system.model.Role;
-import com.dsh.guns.modular.system.model.User;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.IDeptService;
 import com.dsh.guns.modular.system.service.IRoleService;
+import com.dsh.guns.modular.system.service.IStoreService;
 import com.dsh.guns.modular.system.service.IUserService;
 import com.dsh.guns.modular.system.transfer.UserDto;
+import com.dsh.guns.modular.system.util.OBSUploadUtil;
 import com.dsh.guns.modular.system.util.OssUploadUtil;
 import com.dsh.guns.modular.system.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +43,7 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 系统管理员控制器
@@ -61,7 +65,8 @@
 
     @Autowired
     private IRoleService roleService;
-
+    @Autowired
+    private IDeptService deptService;
 
 
     /**
@@ -78,6 +83,7 @@
      */
     @RequestMapping("/user_add")
     public String addView(Model model) {
+        model.addAttribute("role",UserExt.getUser().getObjectType());
         model.addAttribute("language",UserExt.getLanguage());
         LambdaQueryWrapper<Role> roleLambdaQueryWrapper = new LambdaQueryWrapper<>();
         if(UserExt.getUser().getObjectType()!=1){
@@ -86,6 +92,9 @@
         roleLambdaQueryWrapper.eq(Role::getObjType,UserExt.getUser().getObjectType());
         List<Role> list = roleService.list(roleLambdaQueryWrapper);
         model.addAttribute("list",list);
+        // 部门列表
+        List<Dept> depts = deptService.list(new QueryWrapper<>());
+        model.addAttribute("depts",depts);
         return PREFIX + "user_add.html";
     }
 
@@ -106,11 +115,12 @@
     }
 
     /**
-     * 跳转到编辑管理员页面
+     * 跳转到编辑管理员页面 type=1编辑 type=2 查看详情
      */
     @Permission
-    @RequestMapping("/user_edit/{userId}")
-    public String userEdit(@PathVariable Integer userId, Model model) {
+    @RequestMapping("/user_edit/{userId}/{type}")
+    public String userEdit(@PathVariable Integer userId,@PathVariable Integer type, Model model) {
+        model.addAttribute("role",UserExt.getUser().getObjectType());
         if (Objects.isNull(userId)) {
             throw new GunsException(BizExceptionEnum.REQUEST_NULL);
         }
@@ -128,6 +138,10 @@
         List<Role> list = roleService.list(roleLambdaQueryWrapper);
         model.addAttribute("list",list);
         model.addAttribute("language",UserExt.getLanguage());
+        // 部门列表
+        List<Dept> depts = deptService.list(new QueryWrapper<>());
+        model.addAttribute("depts",depts);
+        model.addAttribute("type",type);
         return PREFIX + "user_edit.html";
     }
 
@@ -178,32 +192,68 @@
         }
     }
 
+    @Autowired
+    private IStoreService storeService;
     /**
      * 查询管理员列表
      */
     @RequestMapping("/list")
     @Permission
     @ResponseBody
-    public Object list(@RequestParam(required = false) String name, @RequestParam(required = false) String createTime, @RequestParam(required = false) Integer deptid) {
-        //创建日期
-        String beginTime = null;
-        String endTime = null;
-        if (SinataUtil.isNotEmpty(createTime)){
-            String[] timeArray = createTime.split(" - ");
-            beginTime = timeArray[0];
-            endTime = timeArray[1];
+    public List<UserListVO> list(String name, String phone, String idCard, Integer isSales, Integer state) {
+        UserQuery userQuery = new UserQuery();
+        userQuery.setName(name);
+        userQuery.setPhone(phone);
+        userQuery.setIdCard(idCard);
+        userQuery.setIsSales(isSales);
+        userQuery.setStatus(state);
+
+        // 根据当前登陆人类型来查询员工列表
+        Integer objectType = UserExt.getUser().getObjectType();
+        Integer objectId = UserExt.getUser().getObjectId();
+        switch (objectType){
+            case 1:
+                // 平台查询所有
+                List<UserListVO> res= userService.searchUsers(userQuery);
+                return res;
+            case 2:
+                // 运营商查询运营商账号的员工和属于该运营商门店的员工
+                userQuery.setObjectType(2);
+                userQuery.setObjectId(objectId);
+                // 获取属于这个运营商的门店的店长ids
+                List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId)
+                        .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList());
+                userQuery.setStoreIds(storeStaffIds);
+                List<UserListVO> res1= userService.searchUsers(userQuery);
+                return res1;
+            case 3:
+                // 门店只查询门店员工
+                TStore store = storeService.getById(objectId);
+                List<Integer> storeIds = userQuery.getStoreIds();
+                storeIds.add(store.getStoreStaffId());
+                List<UserListVO> res2= userService.searchUsers(userQuery);
+                return res2;
         }
-        User user = UserExt.getUser();
-        Role role = roleService.getBaseMapper().selectById(user.getRoleid());
-        if ("administrator".equals(role.getTips())) {
-            Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
-            page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid));
-            return super.packForBT(page);
-        } else {
-            Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
-            page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid));
-            return super.packForBT(page);
-        }
+        return new ArrayList<>();
+//        //创建日期
+//        String beginTime = null;
+//        String endTime = null;
+//        if (SinataUtil.isNotEmpty(createTime)){
+//            String[] timeArray = createTime.split(" - ");
+//            beginTime = timeArray[0];
+//            endTime = timeArray[1];
+//        }
+//        User user = UserExt.getUser();
+//        Role role = roleService.getBaseMapper().selectById(user.getRoleid());
+//        if ("administrator".equals(role.getTips())) {
+//            Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+//            page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid));
+//            return super.packForBT(page);
+//        } else {
+//            Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+//            page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid));
+//            return super.packForBT(page);
+//        }
     }
 
     /**
@@ -213,39 +263,51 @@
     @BussinessLog(value = "添加管理员", key = "account", dict = UserDict.class)
     @Permission(Const.ADMIN_NAME)
     @ResponseBody
-    public Tip add(@Valid UserDto user, BindingResult result) {
+    public Object add(@Valid UserDto user, BindingResult result) {
         if (result.hasErrors()) {
             throw new GunsException(BizExceptionEnum.REQUEST_NULL);
         }
 
         // 判断账号是否重复
-        //Check if the account is duplicated
         User theUser = new User();
-        if (user.getAccount()!=""){
-         theUser = userService.getByAccount(user.getAccount());
-
+        if (user.getPhone()!=""){
+         theUser = userService.getByAccount(user.getPhone());
         }
-        System.out.println("=====theUser======="+theUser);
-        if (theUser != null&&user.getAccount()!="") {
-            throw new GunsException(BizExceptionEnum.USER_ALREADY_REG);
+        if (theUser != null){
+            return 5001;
         }
 
         // 完善账号信息
-        // Complete account information
         user.setPassword(SecureUtil.md5(user.getPassword()));
         user.setStatus(ManagerStatus.OK.getCode());
         user.setCreatetime(new Date());
-
         User objectUser = UserFactory.createUser(user);
-        objectUser.setObjectType(UserExt.getUser().getObjectType());
+        objectUser.setObjectType(Integer.valueOf(user.getRoleid()));
         objectUser.setObjectId(UserExt.getUser().getObjectId());
         objectUser.setRoleid(user.getRoleid());
         objectUser.setAccount(user.getPhone());
+        objectUser.setName(user.getName());
+        objectUser.setPhone(user.getPhone());
+        objectUser.setBirthday(user.getBirthday());
+        objectUser.setDeptid(user.getDeptid());
+        objectUser.setIdCard(user.getIdCard());
+        objectUser.setSex(user.getSex());
+        objectUser.setStatus(1);
         objectUser.setPassword(SecureUtil.md5("a123456"));
-        //查找平台所属公司
-        //Search for the company that owns the platform.
+        objectUser.setCreatetime(new Date());
+        // 运营商添加员工
+        if (UserExt.getUser().getObjectType() == 2){
+            objectUser.setObjectType(UserExt.getUser().getObjectType());
+            objectUser.setRoleid("2");
+            objectUser.setObjectId(UserExt.getUser().getObjectId());
+        }
+        // 门店添加员工
+        if (UserExt.getUser().getObjectType() == 3){
+            objectUser.setObjectType(UserExt.getUser().getObjectType());
+            objectUser.setRoleid("3");
+            objectUser.setObjectId(UserExt.getUser().getObjectId());
+        }
         this.userService.save(objectUser);
-
         return SUCCESS_TIP;
     }
 
@@ -257,27 +319,30 @@
     @RequestMapping("/edit")
     @BussinessLog(value = "修改管理员", key = "account", dict = UserDict.class)
     @ResponseBody
-    public Tip edit(@Valid UserDto user, BindingResult result) throws NoPermissionException {
+    public Object edit(@Valid UserDto user, BindingResult result) throws NoPermissionException {
         if (result.hasErrors()) {
             throw new GunsException(BizExceptionEnum.REQUEST_NULL);
         }
-
-
         User oldUser = userService.getById(user.getId());
-//        UserExt.hasRole(Const.ADMIN_NAME)
-        if (false) {
-            this.userService.updateById(UserFactory.editUser(user, oldUser));
-            return SUCCESS_TIP;
-        } else {
-            assertAuth(user.getId());
-            User shiroUser = UserExt.getUser();
-            if (shiroUser.getId().equals(user.getId()) || shiroUser.getId()==1) {
-                this.userService.updateById(UserFactory.editUser(user, oldUser));
-                return SUCCESS_TIP;
-            } else {
-                throw new GunsException(BizExceptionEnum.NO_PERMITION);
+        // 判断是否更改电话
+        if (!oldUser.getPhone().equals(user.getPhone())){
+            User phone = userService.getOne(new QueryWrapper<User>().eq("phone", user.getPhone()));
+            if (phone == null){
+                oldUser.setPhone(user.getPhone());
+            }else{
+                return 5001;
             }
         }
+        oldUser.setName(user.getName());
+        oldUser.setBirthday(user.getBirthday());
+        oldUser.setRoleid(user.getRoleid());
+        oldUser.setDeptid(user.getDeptid());
+        oldUser.setIdCard(user.getIdCard());
+        oldUser.setSex(user.getSex());
+        if (user.getAvatar()!=null && (!user.getAvatar().equals("")))
+        oldUser.setAvatar(user.getAvatar());
+        this.userService.updateById(oldUser);
+        return SUCCESS_TIP;
     }
 
     /**
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java
new file mode 100644
index 0000000..74f110c
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java
@@ -0,0 +1,32 @@
+package com.dsh.guns.modular.system.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 员工管理查询返回VO
+ */
+@Data
+public class UserListVO {
+    // 用户id
+    private Integer id;
+    // 员工姓名
+    private String name;
+    // 联系电话
+    private String phone;
+    // 头像
+    private String avatar;
+    // 生日
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date birthday;
+    // 性别 1男2女
+    private Integer sex;
+    // 身份证号
+    private String idCard;
+    // 所在部门
+    private String deptName;
+    // 状态 1=正常 2=冻结
+    private Integer status;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserQuery.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserQuery.java
new file mode 100644
index 0000000..40bffdc
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserQuery.java
@@ -0,0 +1,23 @@
+package com.dsh.guns.modular.system.model;
+
+import lombok.Data;
+import org.omg.CORBA.PRIVATE_MEMBER;
+
+import java.util.List;
+
+/**
+ * 员工管理查询Query
+ */
+@Data
+public class UserQuery {
+    private String name;
+    private String phone;
+    private String idCard;
+    private Integer isSales;
+    private Integer status;
+    // 以下为运营商、门店权限筛选条件
+    private Integer objectType;
+    private Integer objectId;
+    // 门店员工ids
+    private List<Integer> storeIds;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java
index 20c7e2b..ded8fc6 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IUserService.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.guns.core.dataScope.DataScope;
 import com.dsh.guns.modular.system.model.User;
+import com.dsh.guns.modular.system.model.UserListVO;
+import com.dsh.guns.modular.system.model.UserQuery;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -59,4 +61,5 @@
                                              @Param("deptid") Integer deptid);
 
 
+    List<UserListVO> searchUsers(UserQuery userQuery);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
index b0bcd56..a555213 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -142,24 +142,33 @@
     @Override
     public void updateCoursePackage(TCoursePackage coursePackage, String coursePackagePaymentConfig) {
         String holitime = coursePackage.getHolitime();
-        String[] split = holitime.split(" - ");
-        String startTime = split[0];
-        String endTime = split[1];
-        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
-        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
-        try {
-            Date parse1 = format1.parse(startTime);
-            parse1.setHours(0);
-            parse1.setMinutes(0);
-            parse1.setSeconds(0);
-            Date parse2 = format2.parse(endTime);
-            parse2.setHours(23);
-            parse2.setMinutes(59);
-            parse2.setSeconds(59);
-            coursePackage.setStartTime(parse1);
-            coursePackage.setEndTime(parse2);
-        } catch (ParseException e) {
-            e.printStackTrace();
+        if (holitime!=null){
+            // 如果为空字符串 则默认未修改
+            if (holitime.equals("")){
+                TCoursePackage tCoursePackage = coursePackageClient.queryById(coursePackage.getId());
+                coursePackage.setStartTime(tCoursePackage.getStartTime());
+                coursePackage.setEndTime(tCoursePackage.getEndTime());
+            }else{
+                String[] split = holitime.split(" - ");
+                String startTime = split[0];
+                String endTime = split[1];
+                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
+                try {
+                    Date parse1 = format1.parse(startTime);
+                    parse1.setHours(0);
+                    parse1.setMinutes(0);
+                    parse1.setSeconds(0);
+                    Date parse2 = format2.parse(endTime);
+                    parse2.setHours(23);
+                    parse2.setMinutes(59);
+                    parse2.setSeconds(59);
+                    coursePackage.setStartTime(parse1);
+                    coursePackage.setEndTime(parse2);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
         }
         coursePackageClient.updateCoursePackage(coursePackage);
         coursePackagePaymentConfigClient.delCoursePackagePaymentConfig(coursePackage.getId());
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/UserServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/UserServiceImpl.java
index 332132f..2871004 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/UserServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/UserServiceImpl.java
@@ -9,6 +9,8 @@
 import com.dsh.course.mapper.UserMapper;
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.dataScope.DataScope;
+import com.dsh.guns.modular.system.model.UserListVO;
+import com.dsh.guns.modular.system.model.UserQuery;
 import org.springframework.stereotype.Service;
 
 import com.dsh.guns.modular.system.model.User;
@@ -60,4 +62,9 @@
         List<Map<String, Object>> userListPage = this.baseMapper.getUserListPage(page, dataScope, name, beginTime, endTime, deptid,objectType,objectId);
         return userListPage;
     }
+
+    @Override
+    public List<UserListVO> searchUsers(UserQuery userQuery) {
+       return this.baseMapper.searchUsers(userQuery);
+    }
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java
new file mode 100644
index 0000000..a5e9f7b
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ExcelUtil.java
@@ -0,0 +1,52 @@
+package com.dsh.guns.modular.system.util;
+
+
+import org.apache.poi.hssf.usermodel.*;
+import javax.servlet.http.HttpServletResponse;
+public class ExcelUtil {
+	public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb) {
+		// 第一步,创建一个webbook,对应一个Excel文件
+		if (wb == null) {
+			wb = new HSSFWorkbook();
+		}
+		// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+		HSSFSheet sheet = wb.createSheet(sheetName);
+		// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+		HSSFRow row = sheet.createRow(0);
+		// 第四步,创建单元格,并设置值表头 设置表头居中
+		HSSFCellStyle style = wb.createCellStyle();
+		// 创建一个居中格式
+		style.setAlignment((short) 2);
+		HSSFCell cell = null;
+		// 创建标题
+		for (int i = 0; i < title.length; i++) {
+			cell = row.createCell(i);
+			cell.setCellType(1);
+			cell.setCellValue(title[i]);
+			cell.setCellStyle(style);
+		}
+		if(values!=null){
+			// 创建内容
+			for (int i = 0; i < values.length; i++) {
+				row = sheet.createRow(i + 1);
+				for (int j = 0; j < values[i].length; j++) {
+					row.createCell(j).setCellValue(values[i][j]);
+				}
+			}
+
+		}
+		return wb;
+	}
+
+	public static void setResponseHeader(HttpServletResponse response, String fileName) {
+		try {
+			response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+			response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+			response.addHeader("Pragma", "no-cache");
+			response.addHeader("Cache-Control", "no-cache");
+		} catch (Exception ex) {
+			ex.printStackTrace();
+		}
+	}
+
+}
diff --git a/cloud-server-management/src/main/resources/mapper/UserMapper.xml b/cloud-server-management/src/main/resources/mapper/UserMapper.xml
index a42cc57..71b8210 100644
--- a/cloud-server-management/src/main/resources/mapper/UserMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/UserMapper.xml
@@ -115,5 +115,35 @@
 		</where>
 		order by o.id desc
 	</select>
+    <select id="searchUsers" resultType="com.dsh.guns.modular.system.model.UserListVO">
+		select t1.id,t1.name ,t1.phone ,t1.avatar,t1.birthday,t1.sex,t1.idCard,t1.status
+		 ,t2.simplename as deptName from sys_user t1
+		 left join sys_dept t2 on t1.deptid = t2.id
+		<where>
+			<if test="query.name != null and query.name != ''">
+				and t1.name like CONCAT('%',#{query.name},'%')
+			</if>
+			<if test="query.phone != null and query.phone != ''">
+				and t1.phone like CONCAT('%',#{query.phone},'%')
+			</if>
+			<if test="query.idCard != null and query.idCard != ''">
+				and t1.idCard like CONCAT('%',#{query.idCard},'%')
+			</if>
+			<if test="query.isSales == 1">
+				and (t2.simplename like CONCAT('%','销售','%')
+				or t2.fullname like CONCAT('%','销售','%'))
+			</if>
+			<if test="query.status != null and query.status != ''">
+				and t1.status = #{query.status}
+			</if>
+			<if test="query.storeIds != null and query.storeIds.size()>0">
+				AND t1.id IN
+				<foreach collection="query.storeIds" separator="," item="id" open="(" close=")">
+					#{id}
+				</foreach>
+			</if>
+			and t1.status != 3
+		</where>
+	</select>
 
 </mapper>
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 c2d1727..83c6a9d 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
@@ -95,6 +95,7 @@
 
                             <div class="col-sm-3">
                                 <#button name="搜索" icon="fa-search" clickFun="TStudent.search()"/>
+                                <#button name="重置" icon="fa-trash" clickFun="TStudent.resetSearch()" space="true"/>
                             </div>
                         </div>
                         <div class="hidden-xs" id="TStudentTableToolbar" role="group">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage.html
index 152721d..e346ccf 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage.html
@@ -58,7 +58,7 @@
                             @if(shiro.hasPermission("/coursePackage/examineCoursePackage")){
                             <#button name="审核" icon="fa-plus" clickFun="ExamineCoursePackage.examineCoursePackage()"/>
                             @}
-                            <#button name="详情" icon="fa-check-circle" clickFun="ExamineCoursePackage.detailsExamineCoursePackage()" space="true"/>
+                            <#button name="查看详情" icon="fa-check-circle" clickFun="ExamineCoursePackage.detailsExamineCoursePackage()" space="true"/>
 
                         </div>
                         <#table id="managerTable"/>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage_info.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage_info.html
index a16fef0..9e72ef7 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage_info.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/examineCoursePackage_info.html
@@ -4,6 +4,7 @@
         <div class="form-horizontal">
             <div class="row">
                 <input type="hidden" id="id" value="${item.id}">
+                <input type="hidden" id="type" value="${type}">
                 <div class="form-group">
                     <label class="col-sm-3 control-label">当前状态:</label>
                     <div class="col-sm-4">
@@ -82,6 +83,7 @@
                         </select>
                     </div>
                 </div>
+                @if(type==1){
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*最多预约人数:</label>
                     <div class="col-sm-4">
@@ -89,19 +91,33 @@
                     </div>
                 </div>
                 <div class="form-group">
-                    <label class="col-sm-3 control-label">*上课时间:</label>
-                    <div class="col-sm-4">
-                        <input class="form-control" id="classStartTime" name="classStartTime" value="${classTime}" placeholder="请选择" readonly>
-                    </div>
-                </div>
-                <div class="form-group">
                     <label class="col-sm-3 control-label"></label>
-                    <div class="col-sm-8">
+                    <div class="col-sm-4">
                         @for(obj in classWeeks){
                         <input type="checkbox" name="classWeeks" value="${obj.value}" ${obj.checked ? 'checked' : ''}> ${obj.value}&nbsp;&nbsp;&nbsp;&nbsp;
                         @}
                     </div>
                 </div>
+                <div class="form-group" style="display: flex; align-items: center;" id = "dayTime" >
+                    <div style="display:flex">
+                        <input class="form-control"  value="${time1}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;" disabled>
+                        <i class="fa fa-plus-circle" style="font-size: 24px; margin-left: 10px;" onclick="addTime()" disabled></i>
+                    </div>
+                    @for(o in times!){
+                    <div style="display:flex">
+                        <input class="form-control"  value="${o}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;" disabled>
+                        <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)" disabled></i>
+                    </div>
+                    @}
+                </div>
+                @}
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*扣除课时数:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="needNum" name="name" value="${item.needNum}" readonly>
+                    </div>
+                </div>
+
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*课包封面:</label>
                     <div class="col-sm-4">
@@ -150,7 +166,15 @@
                     </div>
                 </div>
                 <div class="hr-line-dashed"></div>
+                @if(type == 3){
+                <h3>支付设置</h3>
+                @}
+                @if(type == 2){
+                <h3>支付设置</h3>
+                @}
+                @if(type == 1){
                 <h3>课时设置</h3>
+                @}
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*支付方式:</label>
                     <div class="col-sm-4" style="margin-top: 6px;">
@@ -158,17 +182,26 @@
                         <input type="checkbox" name="payType" value="2" ${playPaiCoin ? 'checked' : ''}> 玩湃币&nbsp;&nbsp;&nbsp;&nbsp;
                     </div>
                 </div>
+                @if(type == 1){
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*课时有效期:</label>
                     <div class="col-sm-4">
                         购买后 <input id="validDays" name="validDays" type="number" value="${item.validDays}" min="0" placeholder="天数" style="width: 80px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;" readonly> 天内有效
                     </div>
                 </div>
+                @}
                 <div id="price">
                     <div class="form-group">
+                        @if(type == 1){
                         <label class="col-sm-3 control-label">*课时数:</label>
+                        @}
                         <div class="col-sm-8">
-                            <span class="classNumber_span"><input class="classNumber" type="number" value="${coursePackagePaymentConfig.classHours}" min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;" readonly>&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                            @if(type == 1){
+                            <span class="classNumber_span">
+                                <input class="classNumber" type="number"
+                                       value="${coursePackagePaymentConfig.classHours}"
+                                       min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;" readonly>&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                            @}
                             <span class="cash_span">
                                 @if(cashPayment){
                                 现金支付:<input class="cash" type="number" value="${coursePackagePaymentConfig.cashPayment}" min="0" placeholder="请输入金额" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;" readonly> ¥&nbsp;&nbsp;&nbsp;&nbsp;
@@ -183,7 +216,9 @@
                     </div>
                     @for(obj in coursePackagePaymentConfigs){
                     <div class="form-group">
+                        @if(type == 1){
                         <label class="col-sm-3 control-label">*课时数:</label>
+                        @}
                         <div class="col-sm-8">
                             <span class="classNumber_span"><input class="classNumber" type="number" value="${obj.classHours}" min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;" readonly>&nbsp;&nbsp;&nbsp;&nbsp;</span>
                             <span class="cash_span">
@@ -204,7 +239,7 @@
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*审核状态:</label>
                     <div class="col-sm-8" style="margin-top: 6px;">
-                        <input name="auditStatus" type="radio" value="2" ${auditStatus == 2 ? 'checked' : ''}/> 通过&nbsp;&nbsp;&nbsp;&nbsp;
+                        <input name="auditStatus" type="radio" value="2" checked ${auditStatus == 2 ? 'checked' : ''}/> 通过&nbsp;&nbsp;&nbsp;&nbsp;
                         <input name="auditStatus" type="radio" value="3" ${auditStatus == 3 ? 'checked':''}/> 拒绝&nbsp;&nbsp;&nbsp;&nbsp;
                     </div>
                 </div>
@@ -219,8 +254,8 @@
             </div>
             <div class="row btn-group-m-t">
                 <div class="col-sm-10">
-                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.addSubmit()"/>
-                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="CoursePackageInfo.close()"/>
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="ExamineCoursePackageInfo.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="ExamineCoursePackageInfo.close()"/>
                 </div>
             </div>
         </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetitionUser.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetitionUser.html
index 8b4156e..4edceb0 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetitionUser.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetitionUser.html
@@ -23,7 +23,7 @@
                     </div>
                 </div>
                 <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
-                    <#button name="导出" icon="fa-plus" clickFun="TCompetition.export()"/>
+                    <#button name="导出" icon="fa-plus" clickFun="TCompetition.ouTCompetition()"/>
                 </div>
                 <#table id="TCompetitionTable"/>
             </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html
index d39364a..1d187d3 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html
@@ -128,13 +128,12 @@
                     <div class="form-group">
                         <div class="initialLevel col-sm-12 control-label form-group">
                             <label class="col-sm-3 control-label">*兑换方式: </label>
+                            <input class="col-sm-1 control-label" name="exchangeMethod" checked   onclick="exchangeMethod2()" type="radio"
+                                   value="2"  style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px"/>
+                            <label class="col-sm-1" style="width: 20%;margin-top: 7px">现金+积分</label>
                             <input class="col-sm-1 control-label"  onclick="exchangeMethod1()" name="exchangeMethod" type="radio"
                                    value="1"  style="margin-top: 10px"/>
                             <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">积分</label>
-                            <input class="col-sm-1 control-label" name="exchangeMethod"   onclick="exchangeMethod2()" type="radio"
-                                   value="2"  style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px"/>
-                            <label class="col-sm-1" style="width: 20%;margin-top: 7px">现金+积分</label>
-
                         </div>
                     </div>
                     
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 95e41ad..2ee274a 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
@@ -47,6 +47,7 @@
                                 <#SelectCon id="type" name="折扣类型" >
                                 <option value="">全部</option>
                                 <option value="1">会员折扣</option>
+                                <option value="2">续课优惠</option>
                                 <option value="3">限时折扣</option>
                                 <option value="4">赠送课时</option>
                             </#SelectCon>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html
index 8b7c500..fc6326e 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html
@@ -4,7 +4,31 @@
         <div class="form-horizontal">
             <div class="row">
                 <input type="hidden" id="id" value="${item.id}">
+                <input type="hidden" id="role" value="${role}">
+                <input type="hidden" id="type" value="${type}">
                 <input type="hidden" id="coursePackagePaymentConfig" value='${coursePackagePaymentConfig}'>
+                @if(role==2){
+                <div class="form-group">
+                    <div class="col-sm-2"></div>
+                    <div class="col-sm-10">
+                        <label class="col-sm-2 control-label">审核状态:</label>
+                        <div class="col-sm-4" style="margin-top: 6px;">
+                            <span>审核状态:${type}</span>
+                        </div>
+                    </div>
+                </div>
+                @if(type==3){
+                <div class="form-group">
+                    <div class="col-sm-2"></div>
+                    <div class="col-sm-10">
+                        <label class="col-sm-2 control-label">拒绝理由:</label>
+                        <div class="col-sm-4" style="margin-top: 6px;">
+                            <span>拒绝理由:</span>
+                        </div>
+                    </div>
+                </div>
+                @}
+                @}
                 <div class="form-group">
                     <div class="col-sm-2"></div>
                     <div class="col-sm-10">
@@ -74,7 +98,7 @@
         </div>
     </div>
 </div>
-<script src="${ctxPath}/modular/system/coursePackage/coursePackageDiscount.js"></script>
+<script src="${ctxPath}/modular/system/tDiscountAudit/coursePackageDiscount.js"></script>
 <script src="${ctxPath}/modular/system/tDiscount/tDiscount_info.js"></script>
 
 
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html
index 0865808..2f5f99d 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html
@@ -47,6 +47,7 @@
                                 <#SelectCon id="type" name="折扣类型" >
                                 <option value="">全部</option>
                                 <option value="1">会员折扣</option>
+                                <option value="2">续课优惠</option>
                                 <option value="3">限时折扣</option>
                                 <option value="4">赠送课时</option>
                             </#SelectCon>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html
index eafdd81..96b990f 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html
@@ -8,20 +8,23 @@
                 <div class="form-group">
                     <div class="col-sm-2"></div>
                     <div class="col-sm-10">
-                        <label class="col-sm-2 control-label">当前状态:</label>
-                        @if(state==1){
-                        <div class="col-sm-4" style="margin-top: 6px;color: goldenrod">
-                            <span>${stateStr}</span>
+                        <label class="col-sm-2 control-label">审核状态:</label>
+                        <div class="col-sm-4" style="margin-top: 6px;">
+                            <span>审核状态:${type}</span>
                         </div>
-                        @}
-                        @if(state==3){
-                        <div class="col-sm-4" style="margin-top: 6px;color: red">
-                            <span>${stateStr}</span>
-                        </div>
-                        @}
-
                     </div>
                 </div>
+                @if(type1==3){
+                <div class="form-group">
+                    <div class="col-sm-2"></div>
+                    <div class="col-sm-10">
+                        <label class="col-sm-2 control-label">拒绝理由:</label>
+                        <div class="col-sm-4" style="margin-top: 6px;">
+                            <span>拒绝理由:${reasons}</span>
+                        </div>
+                    </div>
+                </div>
+                @}
                 <div class="form-group">
                     <div class="col-sm-2"></div>
                     <div class="col-sm-10">
@@ -82,6 +85,25 @@
                 <div id="complimentaryClass">
 
                 </div>
+                <div class="form-horizontal">
+                    <div class="col-sm-11">
+                        <div class="col-sm-11">
+                            <div class="form-group">
+                                <label class="col-sm-3 control-label">审核状态:</label>
+                                <div class="col-sm-9">
+                                    <input type="radio" name="r1" value="2" checked> 通过
+                                    <input type="radio" name="r1" value="3"> 拒绝
+                                </div>
+                            </div>
+                            <div class="form-group">
+                                <label class="col-sm-3 control-label">拒绝理由:</label>
+                                <div class="col-sm-9">
+                                    <textarea id="text" style="width: 460px; height: 138px;"></textarea>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
             </div>
             <div class="row btn-group-m-t">
                 <div class="col-sm-10">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_pay.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_pay.html
index 0f1e6ef..05b322e 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_pay.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_pay.html
@@ -26,9 +26,11 @@
                             <#button name="重置" icon="fa-trash" clickFun="TPayInfo.resetSearch()" space="true"/>
                         </div>
                     </div>
+                    @if(type==1){
                     <div class="hidden-xs" id="TPayInfoTableToolbar" role="group">
                         <#button name="核销" icon="fa-plus" clickFun="TPayInfo.WriteOff()"/>
                     </div>
+                    @}
                     <#table id="TPayInfoTable"/>
 
                     <div style="margin-left: 40%">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html
index 7c6e1a5..bb566da 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TStoreList.html
@@ -10,7 +10,7 @@
                     <div class="col-sm-12">
                         <div class="row">
                             <div class="col-sm-3">
-                                <select class="form-control" id="province">
+                                <select class="form-control" id="province" >
                                     <option value="">全部</option>
                                 </select>
                             </div>
@@ -19,11 +19,7 @@
                                     <option value="">全部</option>
                                 </select>
                             </div>
-                    <div class="col-sm-3">
-                        <#SelectCon id="userPopulation" name="所属账号" >
-                        <option value="">全部</option>
-                    </#SelectCon>
-                </div>
+
                 <div class="col-sm-3">
                     <#NameCon id="storeName" name="门店名称" placeholder="请输入门店名称"/>
                 </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tIntegral/TIntegral.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tIntegral/TIntegral.html
index 8c91b71..ccafd8c 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tIntegral/TIntegral.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tIntegral/TIntegral.html
@@ -22,6 +22,7 @@
                                 <option value="2">兑换商品</option>
                                 <option value="3">完成课后练习</option>
                                 <option value="4">观看教学视频</option>
+                                <option value="5">启动游戏</option>
                             </#SelectCon>
                             </div>
                         <div class="col-sm-3">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop.html
index 7cdfae4..9fc2efc 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop.html
@@ -69,6 +69,8 @@
                     @}
                     <#button name="免费福利" icon="fa-remove" clickFun="TCompetition.gift()" space="true"/>
                     <#button name="首页设置" icon="fa-remove" clickFun="TCompetition.indexSet()" space="true"/>
+                    <#button name="门禁设置" icon="fa-plus" clickFun="TCompetition.addDevice()" space="true"/>
+
                 </div>
                 <#table id="TCompetitionTable"/>
             </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_device.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_device.html
new file mode 100644
index 0000000..733263f
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_device.html
@@ -0,0 +1,41 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="carInfoForm">
+            <input id="id" value="${id}" hidden>
+            <div class="form-group" id="cityCode">
+                <label class="col-sm-3 control-label">*选择场地:</label>
+                <div class="col-sm-9">
+                    <select class="form-control" id="site" name="site" >
+                        <option value="">选择场地</option>
+                        @for(i in list){
+                        <option value="${i.id}" >${i.name}</option>
+                        @}
+                    </select>
+                </div>
+            </div>
+            <#input id="device" name="*添加入园闸机" placeholder= "请输入入园闸机id" type="text"/>
+        </div>
+</div>
+
+<div class="row btn-group-m-t">
+    <div class="col-sm-10 col-sm-offset-5">
+        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCompetition.addSubmit3()"/>
+        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCompetition.close()"/>
+    </div>
+</div>
+
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/modular/system/tShop/tShop_info.js"></script>
+<script>
+    laydate.render({
+        elem: '#time',
+        range:true
+    });
+
+
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html
index 87fa3b5..6471b4a 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html
@@ -7,7 +7,12 @@
                 <label class="col-sm-3 control-label">板块名称:</label>
                 <div class="col-sm-9">
                     <input class="form-control" id="name" name="name" type="text" style="width: 400px;">
-
+                </div>
+            </div>
+            <div class="form-group" style="margin-left:-410px">
+                <label class="col-sm-3 control-label">排序:</label>
+                <div class="col-sm-9">
+                    <input class="form-control" id="sort" name="name" type="text" style="width: 400px;">
                 </div>
             </div>
             <div class="form-group" style="margin-left:-410px">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_one.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_one.html
index e8ea2a9..881641a 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_one.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_one.html
@@ -7,7 +7,12 @@
                 <label class="col-sm-3 control-label">板块名称:</label>
                 <div class="col-sm-9">
                     <input class="form-control" id="name" name="name" type="text" style="width: 400px;" value="${item.name}">
-
+                </div>
+            </div>
+            <div class="form-group" style="margin-left:-410px">
+                <label class="col-sm-3 control-label">排序:</label>
+                <div class="col-sm-9">
+                    <input class="form-control" id="sort" name="name" type="text" value="${item.sort}" style="width: 400px;">
                 </div>
             </div>
             <div class="form-group" style="margin-left:-410px">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user.html
index 73b723f..dc53d53 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user.html
@@ -4,7 +4,7 @@
 	<div class="col-sm-12">
 		<div class="ibox float-e-margins">
 			<div class="ibox-title">
-				<h5>用户管理</h5>
+				<h5>员工管理</h5>
 			</div>
 			<div class="ibox-content">
 				<div class="row row-lg">
@@ -13,7 +13,26 @@
 							<div class="col-lg-10 col-sm-9">
 								<div class="row">
 									<div class="col-lg-4 col-sm-12">
-										<#NameCon id="name" name="搜索" placeholder="帐号/姓名/手机号"/>
+										<#NameCon id="name" name="员工姓名" placeholder="请输入"/>
+									</div>
+									<div class="col-lg-4 col-sm-12">
+										<#NameCon id="phone" name="联系电话" placeholder="请输入"/>
+									</div>
+									<div class="col-lg-4 col-sm-12">
+										<#NameCon id="idCard" name="身份证号" placeholder="请输入"/>
+									</div>
+									<div class="col-lg-4 col-sm-12">
+										<#SelectCon id="isSales" name="销售人员" >
+										<option value="">全部</option>
+										<option value="1">是</option>
+									</#SelectCon>
+									</div>
+									<div class="col-lg-4 col-sm-12">
+										<#SelectCon id="status" name="状态" >
+										<option value="">全部</option>
+										<option value="1">正常</option>
+										<option value="2">冻结</option>
+									</#SelectCon>
 									</div>
 								</div>
 							</div>
@@ -36,8 +55,8 @@
 							@if(shiro.hasPermission("/mgr/delete")){
 							<#button name="删除" icon="fa-remove" clickFun="MgrUser.delMgrUser()" space="true"/>
 							@}
-							@if(shiro.hasPermission("/mgr/reset")){
-							<#button name="重置密码" icon="fa-refresh" clickFun="MgrUser.resetPwd()" space="true"/>
+							@if(shiro.hasPermission("/mgr/delete")){
+							<#button name="查看详情" icon="fa-remove" clickFun="MgrUser.openChangeUser1()" space="true"/>
 							@}
 							@if(shiro.hasPermission("/mgr/freeze")){
 							<#button name="冻结" icon="fa-warning" clickFun="MgrUser.freezeAccount()" space="true"/>
@@ -45,6 +64,10 @@
 							@if(shiro.hasPermission("/mgr/unfreeze")){
 							<#button name="解冻" icon="fa-check-circle" clickFun="MgrUser.unfreeze()" space="true"/>
 							@}
+							@if(shiro.hasPermission("/mgr/reset")){
+							<#button name="重置密码" icon="fa-refresh" clickFun="MgrUser.resetPwd()" space="true"/>
+							@}
+
 							@if(shiro.hasPermission("/mgr/kanbanPermissions")){
 							<#button name="看板权限设置" icon="fa-user-secret" clickFun="MgrUser.kanbanPermissions()" space="true"/>
 							@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_add.html
index d070658..4591282 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_add.html
@@ -3,24 +3,34 @@
     <div class="ibox-content">
         <div class="form-horizontal" id="userInfoForm">
             <input type="hidden" id="id" value="">
+            <input type="hidden" id="role" value="role">
             <div class="row">
                 <div class="col-sm-6">
                     <div id="driverInfoContent">
-                        <#input id="name" name="员工姓名" underline="true"/>
-                        <#input id="phone" name="联系电话" underline="true"/>
-                        <#avatar id="avatar" name="照片" underline="true"/>
-                        <#input id="birthday" name="生日" underline="true" type="text"/>
-                        <#select id="sex" name="性别" underline="true" >
+                        <#input id="name" name="*员工姓名" underline="true"/>
+                        <#input id="phone" name="*联系电话" underline="true"/>
+                        <#avatar id="avatar" name="*照片" underline="true"/>
+                        <#input id="birthday" name="*生日" underline="true" type="text"/>
+                        <#select id="sex" name="*性别" underline="true" >
                         <option value="1" selected>男</option>
                         <option value="2">女</option>
                     </#select>
-                    <#input id="idCard" name="身份证号" type="text" underline="true"/>
-                    <#select id="roleid" name="角色" underline="true" >
+                    <#input id="idCard" name="*身份证号" type="text" underline="true"/>
+                    <#select id="deptid" name="*所在部门" underline="true" >
+                    <option value="">请选择</option>
+                    @for(l in depts){
+                    <option value="${l.id}">${l.fullname}</option>
+                    @}
+                </#select>
+                @if(role == 1){
+                    <#select id="roleid" name="*所属角色" underline="true" >
+                <option value="">请选择</option>
                     @for(l in list){
                     <option value="${l.id}">${l.name}</option>
                     @}
-
                 </#select>
+            @}
+
             </div>
         </div>
     </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_edit.html
index 572e1f9..16cbe7d 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/user/user_edit.html
@@ -19,9 +19,16 @@
 					<#input id="idCard" name="身份证号" type="text" underline="true" value="${user.idCard}"/>
 					<#select id="roleid" name="角色" underline="true" >
 					@for(l in list){
-					    <option value="${l.id}" ${l.id == user.roleid ? 'selected=selected' : ''}>${l.name}</option>
+					<option value="${l.id}" ${l.id == user.roleid ? 'selected=selected' : ''}>${l.name}</option>
+					@}
+				</#select>
+					@if(role == 1){
+					<#select id="deptid" name="角色" underline="true" >
+					@for(l in depts){
+					    <option value="${l.id}" ${l.id == user.deptid ? 'selected=selected' : ''}>${l.fullname}</option>
 					@}
 					</#select>
+				@}
 			</div>
 		</div>
 	</div>
@@ -33,7 +40,9 @@
 
 	<div class="row btn-group-m-t">
 		<div class="col-sm-10">
+			@if(type == 1){
 			<#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="UserInfoDlg.editSubmit()"/>
+			@}
 			<#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="UserInfoDlg.close()"/>
 		</div>
 	</div>
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 abd3a9f..147586b 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
@@ -284,12 +284,22 @@
     queryData['date'] = $("#date").val();
     queryData['payMethod'] = $("#payMethod").val();
     queryData['state'] = $("#state").val();
-
-
-
     TStudent.table.refresh({query: queryData});
 };
-
+/**
+ * 重置
+ */
+TStudent.resetSearch = function () {
+    $("#pCode").val("");
+    $("#cCode").val("");
+    $("#store").val("");
+    $("#peopleName").val("");
+    $("#phone").val("");
+    $("#date").val("");
+    $("#payMethod").val("");
+    $("#state").val("");
+    TStudent.search();
+};
 $(function () {
     var defaultColunms = TStudent.initColumn();
     var table = new BSTable(TStudent.id, "/ball/yuyuelist", defaultColunms);
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
index b016738..da6d6f5 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
@@ -305,7 +305,6 @@
     queryData['cityCode'] = $("#cityCode").val();
     queryData['coursePackageTypeId'] = $("#coursePackageTypeId").val();
     queryData['name'] = $("#name").val();
-    queryData['status'] = $("#status").val();
     queryData['state'] = $("#state").val();
     CoursePackage.table.refresh({query: queryData});
 }
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 b239a7a..ff2b91c 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
@@ -391,7 +391,6 @@
 
     }
 
-    let holitime = $('#holitime').val();
 
     var inputElements = document.querySelectorAll('input[name="classStartTime"]');
     let classStartTime =  JSON.stringify(Array.from(inputElements).map(function(element) {
@@ -639,7 +638,7 @@
     //     Feng.error("课时有效期不能为空");
     //     return
     // }
-
+    let holitime = $('#holitime').val();
     let obj = {
         id: id,
         province: province,
@@ -663,10 +662,12 @@
         sort: sort,
         validDays: validDays,
         coursePackagePaymentConfig: JSON.stringify(price),
-        holitime:holitime
+        holitime:$("#holitime").val()
     }
-
-    console.log("======="+obj)
+    console.log("看看")
+    console.log("======="+holitime)
+    console.log(holitime)
+    console.log($("#holitime").val())
 
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/coursePackage/updateCoursePackage", function (data) {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage.js
index f296b81..552b87e 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage.js
@@ -1,7 +1,7 @@
 /**
  * 系统管理--用户管理的单例对象
  */
-let ExamineCoursePackage = {
+var ExamineCoursePackage = {
     id: "managerTable",//表格id
     seItem: null,		//选中的条目
     table: null,
@@ -17,15 +17,13 @@
 ExamineCoursePackage.initColumn = function () {
     let columns = [
         {field: 'selectItem', radio: true},
-        {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
+        {title: '序号', field: 'id', visible: false, align: 'center', valign: 'middle'},
         {title: '所在省市', field: 'city', align: 'center', valign: 'middle'},
         {title: '所属门店', field: 'store', align: 'center', valign: 'middle'},
+        {title: '课包种类', field: 'type', align: 'center', valign: 'middle'},
         {title: '课包类型', field: 'coursePackageType', align: 'center', valign: 'middle'},
         {title: '课包名称', field: 'name', align: 'center', valign: 'middle'},
-        {title: '最多预约人数', field: 'maxSubscribeNumber', align: 'center', valign: 'middle'},
-        {title: '课程有效期', field: 'validDays', align: 'center', valign: 'middle'},
         {title: '支付方式', field: 'payType', align: 'center', valign: 'middle'},
-        {title: '排序', field: 'sort', align: 'center', valign: 'middle'},
         {title: '审核状态', field: 'auditStatus', align: 'center', valign: 'middle',
             formatter: function (v) {
                 switch (v) {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage_info.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage_info.js
index 5a114e0..16a80e2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/examineCoursePackage_info.js
@@ -14,22 +14,24 @@
     parent.layer.close(window.parent.ExamineCoursePackage.layerIndex);
 };
 
-
 ExamineCoursePackageInfo.addSubmit = function () {
+
     let auditStatus = $('input[name="auditStatus"]:checked').val();;
     if(typeof auditStatus == "undefined"){
         Feng.error("请选择审核结果");
         return
     }
-    let authRemark = $('#authRemark').text();
+    let authRemark = $('#authRemark').val();
     if(3 == auditStatus && '' == authRemark){
         Feng.error("请输入拒绝理由");
         return
     }
     let ajax = new $ax(Feng.ctxPath + "/coursePackage/setCoursePackageAuditStatus", function (res) {
         if(res.code == 200){
+            console.log("路径")
             Feng.success("审核成功!");
             ExamineCoursePackageInfo.close();
+            window.parent.ExamineCoursePackage.table.refresh();
         }else{
             Feng.error(res.msg);
         }
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
index 3ec4e13..7ee5659 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
@@ -17,7 +17,11 @@
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
         {title: '姓名', field: 'name', visible: true, align: 'center', valign: 'middle',width:'8%',
         },
-        {title: '性别', field: 'sex', visible: true, align: 'center', valign: 'middle'},
+        {title: '性别', field: 'sex', visible: true, align: 'center', valign: 'middle',
+            formatter:function (data) {
+                return {1:"男",2:"女"}[data]
+            }
+        },
         {title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle',width:'8%',
         },
         {title:  '身份证号', field: 'idCard', visible: true, align: 'center', valign: 'middle',width:'8%',
@@ -327,14 +331,11 @@
  * 导出车辆操作
  */
 TCompetition.ouTCompetition = function () {
-    var operation = function() {
-        window.location.href = Feng.ctxPath + "/TCompetition/ouTCompetition";
-    };
-    if(language==1){
-        Feng.confirm("是否确认导出车辆信息?", operation);
-    }else if(language==2){
-        Feng.confirm("Are you sure to export vehicle information?", operation);
-    }else {
-        Feng.confirm("Apakah Anda pasti akan mengekspor informasi kendaraan?", operation);
-    }
-}
\ No newline at end of file
+    var state=$("#state").val()
+    var id=$("#id").val()
+    var ajax = new $ax(Feng.ctxPath + "/tCompetition/export", function(data){
+    });
+    ajax.set("state",state);
+    ajax.set("id",id);
+    ajax.start();
+};
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
index 14d18da..5935920 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
@@ -457,12 +457,17 @@
         stores = this.storeIds.join(',');
         console.log('stores--===--',stores)
     }
+
+    var ensure = document.getElementById("ensure");
+    ensure.disabled = true;
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tCouponManage/commitData", function (data) {
+        ensure.disabled = false;
         Feng.success("添加成功!");
         window.parent.TCoupon.table.refresh();
         couponInfoDlg.close();
     }, function (data) {
+        ensure.disabled = false;
         Feng.error("添加失败!" + data.responseJSON.message + "!");
     });
     ajax.set("userType",$('#userType').val());
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js
index c298a34..7845322 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js
@@ -15,6 +15,7 @@
     return [
         {field: 'selectItem', radio: true},
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
+        {title: '课包id', field: 'courseId', visible: false, align: 'center', valign: 'middle'},
         {title: '所在省', field: 'pname', visible: true, align: 'center', valign: 'middle'
         },
         {title: '所在市', field: 'cname', visible: true, align: 'center', valign: 'middle'},
@@ -218,7 +219,7 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tDiscount/info?id=' + this.seItem.id
+            content: Feng.ctxPath + '/tDiscount/info?id=' + this.seItem.courseId
         });
         this.layerIndex = index;
     }
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js
index 73845ff..9694fee 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js
@@ -15,6 +15,7 @@
     return [
         {field: 'selectItem', radio: true},
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
+        {title: '课包id', field: 'courseId', visible: true, align: 'center', valign: 'middle'},
         {title: '所在省', field: 'pname', visible: true, align: 'center', valign: 'middle'
         },
         {title: '所在市', field: 'cname', visible: true, align: 'center', valign: 'middle'},
@@ -258,7 +259,7 @@
             area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/tDiscount/infoOne?id=' + this.seItem.id
+            content: Feng.ctxPath + '/tDiscount/infoOne?id=' + this.seItem.courseId
         });
         this.layerIndex = index;
     }
@@ -306,7 +307,7 @@
     queryData['cityCode'] = $("#cCode").val();
     queryData['name'] = $("#name").val();
     queryData['shopName'] = $("#shopName").val();
-    queryData['type'] = $("type").val();
+    queryData['type'] = $("#type").val();
     TCompetition.table.refresh({query: queryData});
 };
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/TStoreInfo.js b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/TStoreInfo.js
index 9144697..7fcae33 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/TStoreInfo.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/TStoreInfo.js
@@ -91,7 +91,6 @@
 TStoreProvince.resetSearch = function () {
     $("#province").val('')
     $("#city").val('')
-    $("#account").val('')
     $("#storeName").val('')
     TStoreProvince.search();
 };
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tIntegral/tIntegral.js b/cloud-server-management/src/main/webapp/static/modular/system/tIntegral/tIntegral.js
index bff05c8..f1c2a35 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tIntegral/tIntegral.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tIntegral/tIntegral.js
@@ -29,7 +29,7 @@
         },
         {title: '积分类型', field: 'type', visible: true, align: 'center', valign: 'middle',
             formatter:function (data) {
-                return{1:"赠送积分", 2:"兑换商品",3:"完成课后练习",4:"观看教学视频"}[data]
+                return{1:"赠送积分", 2:"兑换商品",3:"完成课后练习",4:"观看教学视频",5:"启动游戏"}[data]
             }
         },
         {title: '积分明细', field: 'integral', visible: true, align: 'center', valign: 'middle',
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js
index d055be3..cf98d95 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js
@@ -42,6 +42,8 @@
         },
     ];
 };
+
+
 function currentTime(timestamp){
     var time = timestamp + '';
     if(time.length != 13){
@@ -88,7 +90,23 @@
         return true;
     }
 };
-
+/**
+ *
+ * 点击门店设置门禁
+ */
+TCompetition.addDevice = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '添加门禁',
+            area: ['50%', '50%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_addDevice/' +TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
 /**
  * 点击添加车辆管理
  */
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js
index dc29b38..6a4c19b 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js
@@ -737,9 +737,14 @@
 
 
     let name = $("#name").val()
+    let sort = $("#sort").val()
 
     if(name=='' || name ==null){
         Feng.info("请填写板块名称")
+        return;
+    }
+    if(sort=='' || sort ==null){
+        Feng.info("请填写排序")
         return;
     }
 
@@ -758,6 +763,7 @@
     });
     ajax.set("name",name);
     ajax.set("id",$("#id").val());
+    ajax.set("sort",$("#sort").val());
     ajax.start();
 }
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherTwo.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherTwo.js
index ac30f9f..f357f36 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherTwo.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherTwo.js
@@ -828,7 +828,11 @@
         Feng.info("请填写板块名称")
         return;
     }
-
+    let sort = $("#sort").val()
+    if(sort=='' || sort ==null){
+        Feng.info("请填写排序")
+        return;
+    }
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tShop/addConfig1", function(data){
         if(data.code == 200){
@@ -844,6 +848,7 @@
     });
     ajax.set("name",name);
     ajax.set("id",$("#id").val());
+    ajax.set("sort",$("#sort").val());
     ajax.start();
 }
 TCompetition.close = function() {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
index cf7ad49..276bd3e 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
@@ -100,7 +100,16 @@
     .set('registerDate')
     .set('commercialType');
 }
-
+TCarInfoDlg.addSubmit3 = function() {
+    var ajax = new $ax(Feng.ctxPath + "/tShop/addDevice", function(data){
+        window.parent.TCompetition.table.refresh();
+        TCarInfoDlg.close();
+    });
+    ajax.set("id",$("#id"));
+    ajax.set("siteId",$("#site"));
+    ajax.set("device",$("#device"));
+    ajax.start();
+}
 TCarInfoDlg.oneChange = function (e) {
     console.log(111)
     var oneId=$(e).val();
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/user/user.js b/cloud-server-management/src/main/webapp/static/modular/system/user/user.js
index d0c1fc7..da1d9f2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/user/user.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/user/user.js
@@ -23,92 +23,36 @@
                 return "";
             }
         },
-        {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
-        {title:  language==1?'账号':(language==2?'Account number':'Nomor akun'), field: 'account', align: 'center', valign: 'middle', sortable: true},
-        {title:  language==1?'姓名':(language==2?'name':'Nama Lengkap'), field: 'name', align: 'center', valign: 'middle', sortable: true},
+        {title: '序号', field: 'id', visible: false, align: 'center', valign: 'middle'},
+        {title:  '姓名', field: 'name', align: 'center', valign: 'middle', sortable: true},
+        {title:  '电话', field: 'phone', align: 'center', valign: 'middle', sortable: true},
+        {title:  '头像', field: 'avatar', align: 'center', valign: 'middle',
+            formatter: function (value, row, index) {
+                value = typeof value == "undefined" || value == '' ? '/static/img/NoPIC.png' : value;
+                return '<img src="' + value + '" style="height: 100px;"/>'
+            },
+            sortable: true},
+        {title:  '生日', field: 'birthday', align: 'center', valign: 'middle', sortable: true},
         {title: language==1?'性别':(language==2?'Gender':'Jenis kelamin'), field: 'sexName', align: 'center', valign: 'middle', sortable: true,
             formatter:function (data) {
-                if(language==1){
                     if(data==1){
                         return '男'
                     }else {
                         return '女'
                     }
-                }else if(language==2){
+            }
+        },
+        {title:  '身份证号', field: 'idCard', align: 'center', valign: 'middle', sortable: true},
+        {title:  '所在部门', field: 'deptName', align: 'center', valign: 'middle', sortable: true},
+        {title:  '状态', field: 'status', align: 'center', valign: 'middle', sortable: true,
+            formatter:function (data) {
                     if(data==1){
-                        return 'man'
+                        return '正常'
                     }else {
-                        return 'woman'
+                        return '冻结'
                     }
-                }else {
-                    if(data==1){
-                        return 'laki-laki'
-                    }else {
-                        return 'wanita'
-                    }
-                }
-
             }
         },
-        {title: language==1?'角色':(language==2?'role':'peran'), field: 'roleName', visible: true, align: 'center', valign: 'middle', sortable: true,
-            formatter: function (value, row) {
-                var btn = "";
-                if(row.roleName != '' && row.roleName != null) {
-                    var labelStr = "";
-                    var labelStrs = "";
-                    var labelArray = row.roleName.split(",");
-                    for(var i=0;i<labelArray.length;i++){
-                        labelStr += labelArray[i] +"<br>";
-                        labelStrs += labelArray[i] + "&#10;";
-                    }
-                    labelStr = labelStr.substring(0,labelStr.length-4);
-                    labelStrs = labelStrs.substring(0,labelStrs.length-5);
-                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + labelStrs + '" onfocus="AppCar.tooltip()">' + labelStr + '</p>']
-                }
-                return btn;
-            }
-        },
-        {title: language==1?'部门':(language==2?'department':'departemen'), field: 'deptName', align: 'center', valign: 'middle', sortable: true},
-        {title: language==1?'邮箱':(language==2?'email':'email'), field: 'email', align: 'center', valign: 'middle', sortable: true},
-        {title: language==1?'电话':(language==2?'phone':'Telepon'), field: 'phone', align: 'center', valign: 'middle', sortable: true},
-        {title:language==1?'创建时间':(language==2?'Creation time':'Waktu penciptaan'), field: 'createtime', visible: true, align: 'center', valign: 'middle', sortable: true,
-            formatter: function (value, row) {
-                var btn = "";
-                if(row.createtime1 != '' && row.createtime1 != null) {
-                    var time = row.createtime1.replace(" ",'<br>');
-                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.createtime1 + '" onfocus="AppCar.tooltip()">' + time + '</p>']
-                }
-                return btn;
-            }
-        },
-        {title: language==1?'状态':(language==2?'State':'Status'), field: 'statusName', visible: true, align: 'center', valign: 'middle',
-            formatter: function (value, row) {
-                var btn = "";
-                if(row.statusName != '' && row.statusName != null) {
-                    if(language==1){
-                        if (row.statusName == "2"){
-                            btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color: red;" title="' + `冻结` + '" onfocus="AppUserInfo.tooltip()">' + `冻结` + '</p>']
-                        }else{
-                            btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + `启用` + '" onfocus="AppUserInfo.tooltip()">' + `启用` + '</p>']
-                        }
-                    }else if(language==2){
-                        if (row.statusName == "2"){
-                            btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color: red;" title="' + `freeze` + '" onfocus="AppUserInfo.tooltip()">' + `freeze` + '</p>']
-                        }else{
-                            btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + `enable` + '" onfocus="AppUserInfo.tooltip()">' + `enable` + '</p>']
-                        }
-                    }else {
-                        if (row.statusName == "2"){
-                            btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color: red;" title="' + `Membekukan` + '" onfocus="AppUserInfo.tooltip()">' + 'Membekukan' + '</p>']
-                        }else{
-                            btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + `aktifkan` + '" onfocus="AppUserInfo.tooltip()">' + 'aktifkan' + '</p>']
-                        }
-                    }
-
-                }
-                return btn;
-            }
-        }
         ];
     return columns;
 };
@@ -154,7 +98,24 @@
             area: ['800px', '450px'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/mgr/user_edit/' + this.seItem.id
+            content: Feng.ctxPath + '/mgr/user_edit/' + this.seItem.id+"/1"
+        });
+        this.layerIndex = index;
+    }
+};
+/**
+ * 点击查看详情按钮时
+ * @param userId 管理员id
+ */
+MgrUser.openChangeUser1 = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: language==1?'编辑':(language==2?'Edit':'Edit'),
+            area: ['800px', '450px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/mgr/user_edit/' + this.seItem.id+"/2"
         });
         this.layerIndex = index;
     }
@@ -207,15 +168,7 @@
             ajax.set("userId", userId);
             ajax.start();
         };
-
-        if(language==1){
-            Feng.confirm("是否删除用户" + MgrUser.seItem.account + "?",operation);
-        }else if(language==2){
-            Feng.confirm("Whether to delete a user" + MgrUser.seItem.account + "?",operation);
-        }else {
-            Feng.confirm("Apakah menghapus pengguna" + MgrUser.seItem.account + "?",operation);
-        }
-
+        Feng.confirm("是否删除员工:       " + MgrUser.seItem.name + "?",operation);
     }
 };
 
@@ -288,7 +241,7 @@
     if (this.check()) {
         var userId = this.seItem.id;
         if(language==1){
-            parent.layer.confirm('是否重置密码为a123456?', {
+            parent.layer.confirm('是否重置密码为<span style="color: red;">a123456</span>?', {
                 btn: ['确定', '取消'],
                 shade: false //不显示遮罩
             }, function () {
@@ -333,18 +286,21 @@
 
 MgrUser.resetSearch = function () {
     $("#name").val("");
-    $("#createTime").val("");
+    $("#phone").val("");
+    $("#idCard").val("");
+    $("#isSales").val("");
+    $("#status").val("");
 
     MgrUser.search();
 }
 
 MgrUser.search = function () {
     var queryData = {};
-
-    queryData['deptid'] = MgrUser.deptid;
     queryData['name'] = $("#name").val();
-    queryData['createTime'] = $("#createTime").val();
-
+    queryData['phone'] = $("#phone").val();
+    queryData['idCard'] = $("#idCard").val();
+    queryData['isSales'] = $("#isSales").val();
+    queryData['state'] = $("#status").val();
     MgrUser.table.refresh({query: queryData});
 }
 
@@ -357,7 +313,7 @@
     var defaultColunms = MgrUser.initColumn();
     var table = new BSTable(MgrUser.id, "/mgr/list", defaultColunms);
     // 设置物理分页server(逻辑分页client)
-    table.setPaginationType("server");
+    table.setPaginationType("client");
     // 表单提交参数
     var queryData = {};
     queryData['deptid'] = MgrUser.deptid;
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/user/user_info.js b/cloud-server-management/src/main/webapp/static/modular/system/user/user_info.js
index 4ccc0dd..372195a 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/user/user_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/user/user_info.js
@@ -160,7 +160,7 @@
  * 收集数据
  */
 UserInfoDlg.collectData = function () {
-    this.set('id').set('account').set('sex').set('password').set('avatar')
+    this.set('id').set('account').set('sex').set('password').set('avatar').set("deptid")
         .set('email').set('name').set('birthday').set('rePassword').set('roleid').set('phone').set('idCard');
 };
 
@@ -197,9 +197,23 @@
     if (!this.validate()) {
         return;
     }
-
-
-
+    if($("#name").val()==''){
+        Feng.info("请输入员工姓名")
+        return;
+    }
+    var phonePattern = /^1[3-9]\d{9}$/;
+    if (!phonePattern.test($("#phone").val())) {
+        Feng.info("请输入合法手机号")
+        return ;
+    }
+    if($("#phone").val()==''){
+        Feng.info("请输入员工电话")
+        return;
+    }
+    if($("#birthday").val()==''){
+        Feng.info("请选择员工生日")
+        return;
+    }
     var avatar = $("#avatar").val();
     if(avatar==''){
         Feng.info("请上传照片")
@@ -210,20 +224,33 @@
         Feng.info("请选择性别")
         return;
     }
-    var roleid = $("#roleid").val();
-    if(roleid==''){
-        Feng.info("请选择角色")
+    // 当前登陆人类型 如果不是平台 不校验角色选择
+    var role = $("#role").val();
+    if (role==1){
+        var roleid = $("#roleid").val();
+        if(roleid==''){
+            Feng.info("请选择角色")
+            return;
+        }
+    }
+    var dept = $("#deptid").val();
+    if(dept==''){
+        Feng.info("请选择部门")
         return;
     }
     console.log(this.userInfoData)
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/mgr/add", function (data) {
-          Feng.success("添加成功!");
-        window.parent.MgrUser.table.refresh();
-        UserInfoDlg.close();
-        $(".img-circle").each(function () {
-            $(this).attr("src",Feng.ctxPath+$("#avatar").val());
-        })
+        if (data==5001){
+            Feng.error("该手机号已存在!");
+        }else{
+            Feng.success("添加成功!");
+            window.parent.MgrUser.table.refresh();
+            UserInfoDlg.close();
+            $(".img-circle").each(function () {
+                $(this).attr("src",Feng.ctxPath+$("#avatar").val());
+            })
+        }
     }, function (data) {
         Feng.error("添加失败!" + data.responseJSON.message + "!");
     });
@@ -244,17 +271,55 @@
     }
     console.log(this.userInfoData)
 
+    if($("#name").val()==''){
+        Feng.info("请输入员工姓名")
+        return;
+    }
+    var phonePattern = /^1[3-9]\d{9}$/;
+    if (!phonePattern.test($("#phone").val())) {
+        Feng.info("请输入合法手机号")
+        return ;
+    }
+    if($("#phone").val()==''){
+        Feng.info("请输入员工电话")
+        return;
+    }
+    if($("#birthday").val()==''){
+        Feng.info("请选择员工生日")
+        return;
+    }
 
+    var sex = $("#sex").val();
+    if(sex==''){
+        Feng.info("请选择性别")
+        return;
+    }
+    // 当前登陆人类型 如果不是平台 不校验角色选择
+    var role = $("#role").val();
+    if (role==1){
+        var roleid = $("#roleid").val();
+        if(roleid==''){
+            Feng.info("请选择角色")
+            return;
+        }
+    }
+    var dept = $("#deptid").val();
+    if(dept==''){
+        Feng.info("请选择部门")
+        return;
+    }
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/mgr/edit", function (data) {
-        Feng.success("修改成功!");
-        if (window.parent.MgrUser != undefined) {
+        if (data==5001){
+            Feng.error("该手机号已存在!");
+        }else{
+            Feng.success("修改成功!");
             window.parent.MgrUser.table.refresh();
             UserInfoDlg.close();
+            $(".img-circle").each(function () {
+                $(this).attr("src",Feng.ctxPath+$("#avatar").val());
+            })
         }
-        window.parent.$(".img-circle").each(function () {
-            $(this).attr("src",$("#avatar").val());
-        })
 
         window.parent.$("#userNameTab").text($("#name").val());
     }, function (data) {

--
Gitblit v1.7.1