From e5a431b9082c8882ccdd69d04d4bd76645d44b6e Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 27 一月 2026 20:50:03 +0800
Subject: [PATCH] bug修改

---
 cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml                         |    2 
 cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/AppUserDetailsVo.java        |    8 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppAuditController.java |  110 +++++
 cloud-server-activity/src/main/java/com/dsh/activity/model/response/SalesDetailVO.java                     |    1 
 cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java                                    |    4 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_info.html                  |   80 +++
 cloud-server-account/src/main/java/com/dsh/account/dto/AuditBatchDTO.java                                  |   15 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java  |    6 
 cloud-server-management/src/main/webapp/static/modular/system/tPayHuimin/tPayHuimin.js                     |    1 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/appUser/TAppUser_addStudent.html               |    4 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit.html                       |   40 +
 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/AuditBatchDTO.java          |   15 
 cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit_info.js                  |  113 +++++
 cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java                       |  117 +++++
 cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js                          |    1 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js                       |    1 
 cloud-server-management/src/main/webapp/static/modular/system/vipPayment/vipPayment.js                     |    1 
 cloud-server-account/src/main/java/com/dsh/account/dto/UserAuditDTO.java                                   |   16 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SalesDetailVO.java                 |    1 
 cloud-server-account/src/main/java/com/dsh/account/service/UserAuditService.java                           |   22 +
 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java                |   20 
 cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java                   |   89 ++++
 cloud-server-account/src/main/resources/mapper/UserAuditMapper.xml                                         |   18 
 cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js                          |    9 
 cloud-server-activity/src/main/resources/mapper/PayHuiminMapper.xml                                        |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java               |    1 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/UserAuditDTO.java              |   17 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js                                |    2 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/TUserAudit.java             |   82 +++
 cloud-server-account/src/main/java/com/dsh/account/entity/TUserAudit.java                                  |  101 ++++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_audit.html                 |   62 ++
 cloud-server-account/src/main/java/com/dsh/account/service/impl/UserAuditServiceImpl.java                  |   31 +
 cloud-server-other/src/main/resources/mapper/GameMapper.xml                                                |    2 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                   |   75 +++
 cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java                         |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeVO.java                      |    2 
 cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit.js                       |  131 ++++++
 cloud-server-account/src/main/java/com/dsh/account/mapper/UserAuditMapper.java                             |   24 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java        |    2 
 39 files changed, 1,200 insertions(+), 31 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 94baaba..007cbec 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
@@ -18,12 +18,7 @@
 import com.dsh.account.model.query.UserDetailsOfSearch;
 import com.dsh.account.model.query.appUserQuery.QueryAppUser;
 import com.dsh.account.model.vo.QueryAppUserVO;
-import com.dsh.account.service.IVipPaymentService;
-import com.dsh.account.service.TAppGiftService;
-import com.dsh.account.service.TAppUserService;
-import com.dsh.account.service.TCourseInfoRecordService;
-import com.dsh.account.service.TStudentService;
-import com.dsh.account.service.UserIntegralChangesService;
+import com.dsh.account.service.*;
 import com.dsh.account.util.PayMoneyUtil;
 import com.dsh.account.util.ResultUtil;
 import com.dsh.account.util.TokenUtil;
@@ -49,6 +44,7 @@
 import java.io.BufferedReader;
 import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -85,7 +81,116 @@
 
     @Autowired
     private UserIntegralChangesService userIntegralChangesService;
+    @Autowired
+    private UserAuditService userAuditService;
+    /**
+     * 查询用户头像昵称审核列表
+     */
+    @ResponseBody
+    @PostMapping("/user/listAudit")
+    public List<Map<String, Object>> listAudit(@RequestBody UserAuditDTO dto) {
+        List<Map<String, Object>> maps = userAuditService.listAudit(dto);
+        for (Map<String, Object> map : maps) {
+            if (map.get("auditTime")!=null){
+                // 将时间戳转换为YYYY-MM-DD HH:mm:ss
+                String s = map.get("auditTime").toString().split("\\.")[0];
+                map.put("auditTime", s);
+            }
+        }
+        return maps;
+    }
+    @ResponseBody
+    @PostMapping("/user/audit")
+    public void audit(@RequestBody TUserAudit dto){
+        TUserAudit userAudit = userAuditService.getById(dto.getId());
+        TAppUser appUser = appUserService.getById(userAudit.getAppUserId());
+        if (dto.getState()==2){
+            // 审核通过 修改用户头像或昵称
+            if (userAudit.getType()==1){
+                appUser.setName(userAudit.getName());
+            }else{
+                appUser.setHeadImg(userAudit.getHeadImg());
+            }
+            appUserService.updateById(appUser);
+            userAudit.setState(2);
+            userAudit.setAuditTime(new Date());
 
+            userAuditService.updateById(userAudit);
+        }else{
+            userAudit.setState(3);
+            userAudit.setRemark(dto.getRemark());
+            userAudit.setAuditTime(new Date());
+
+            userAuditService.updateById(userAudit);
+        }
+    }
+    @ResponseBody
+    @PostMapping("/user/auditBatch")
+    public void auditBatch(@RequestBody AuditBatchDTO dto){
+        List<TUserAudit> list = userAuditService.lambdaQuery().in(TUserAudit::getId, dto.getIds())
+                .list();
+        Map<Integer, TAppUser> userMap = appUserService.lambdaQuery()
+                .in(TAppUser::getId, list.stream().map(TUserAudit::getAppUserId)
+                        .collect(Collectors.toList())).list()
+                .stream().collect(Collectors.toMap(TAppUser::getId, e -> e));
+        for (TUserAudit userAudit : list) {
+            TAppUser appUser = userMap.get(userAudit.getAppUserId());
+            if (dto.getState()==2){
+                // 审核通过 修改用户头像或昵称
+                if (userAudit.getType()==1){
+                    appUser.setName(userAudit.getName());
+                }else{
+                    appUser.setHeadImg(userAudit.getHeadImg());
+                }
+                userAudit.setAuditTime(new Date());
+                userAudit.setState(2);
+                userAuditService.updateById(userAudit);
+            }else{
+                userAudit.setState(3);
+                userAudit.setRemark("");
+                userAudit.setAuditTime(new Date());
+
+                userAuditService.updateById(userAudit);
+            }
+        }
+
+    }
+    /**
+     * 获取审核详情
+     */
+    @ResponseBody
+    @GetMapping("/user/getAuditById/{id}")
+    public TUserAudit getAuditById(@PathVariable("id")Integer id) {
+        return userAuditService.getById(id);
+    }
+    /**
+     * 批量修改用户昵称和头像
+     */
+    @ResponseBody
+    @PostMapping("/base/appUser/updateHeadImgAndName")
+    public void updateHeadImgAndName() {
+        List<TAppUser> list = appUserService.list();
+        for (TAppUser appUser : list) {
+            appUser.setHeadImg("https://we-park-life.oss-cn-beijing.aliyuncs.com/img/f7fbeaed277a45ab9591b70dc5699cab.jpg");
+            String s = generateNickname(appUser.getId());
+            appUser.setName(s);
+        }
+        appUserService.updateBatchById(list);
+    }
+    public static String generateNickname(Integer userId) {
+        if (userId == null) {
+            return null;
+        }
+
+        // 将用户ID转换为字符串
+        String userIdStr = String.valueOf(userId);
+
+        // 使用String.format确保总长度为6位,不足的前面补0
+        String formattedId = String.format("%06d", Long.parseLong(userIdStr));
+
+        // 返回"用户" + 格式化后的ID
+        return "用户" + formattedId;
+    }
     /**
      * 根据介绍有礼id查询当前活动参与次数
      */
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
index e89fe07..a969c91 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -2,12 +2,15 @@
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.dsh.account.entity.TAppUser;
+import com.dsh.account.entity.TUserAudit;
 import com.dsh.account.feignclient.activity.model.IntegralCommodity;
 import com.dsh.account.feignclient.other.SysLogClient;
 import com.dsh.account.model.vo.userBenefitDetail.*;
 import com.dsh.account.service.RechargeRecordsService;
 import com.dsh.account.service.TAppUserService;
+import com.dsh.account.service.UserAuditService;
 import com.dsh.account.service.UserIntegralChangesService;
 import com.dsh.account.util.PayMoneyUtil;
 import com.dsh.account.util.ResultUtil;
@@ -29,6 +32,7 @@
 import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -43,6 +47,8 @@
 
     @Autowired
     private TAppUserService tauService;
+    @Autowired
+    private UserAuditService userAuditService;
 
     @Autowired
     private TokenUtil tokenUtil;
@@ -102,7 +108,32 @@
         }
     }
 
+    @ResponseBody
+    @PostMapping("/api/useBenefit/getAuditById")
+    @ApiOperation(value = "2.0新增接口 查询审核信息", tags = {"APP-使用福利"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+            @ApiImplicitParam(name = "id", value = "用户头像审核记录id或用户昵称审核记录id", dataType = "int", required = true),
+    })
+    public ResultUtil<TUserAudit> getAuditById(Integer id) {
+        TUserAudit userAudit = userAuditService.getById(id);
+        if (null == userAudit){
+            userAudit=new TUserAudit();
+        }
+        return ResultUtil.success(userAudit);
+    }
+    @ResponseBody
+    @PostMapping("/api/useBenefit/cancelAudit")
+    @ApiOperation(value = "2.0新增接口 关闭头像或昵称审核记录", tags = {"APP-使用福利"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+            @ApiImplicitParam(name = "id", value = "用户头像审核记录id或用户昵称审核记录id", dataType = "int", required = true),
+    })
+    public ResultUtil cancelAudit(Integer id) {
+        userAuditService.removeById(id);
 
+        return ResultUtil.success();
+    }
     @ResponseBody
     @PostMapping("/api/useBenefit/userDetails")
     @ApiOperation(value = "用户个人信息", tags = {"APP-使用福利"})
@@ -152,6 +183,35 @@
 
                     detailsVo.setMemberLifespan(format1.format(tAppUser.getVipEndTime()));
                 }
+                // 查询用户是否有待审核或已驳回的昵称头像审核记录
+                TUserAudit nameAudit = userAuditService.lambdaQuery()
+                        .eq(TUserAudit::getAppUserId, appUserId)
+                        .eq(TUserAudit::getType, 1)
+                        .ne(TUserAudit::getState, 2).last("limit 1").one();
+                TUserAudit imageAudit = userAuditService.lambdaQuery()
+                        .eq(TUserAudit::getAppUserId, appUserId)
+                        .eq(TUserAudit::getType, 2)
+                        .ne(TUserAudit::getState, 2).last("limit 1").one();
+                if (nameAudit!=null){
+                    detailsVo.setNameAuditId(nameAudit.getId());
+                    if (nameAudit.getState()==1){
+                        detailsVo.setNameAudit(1);
+                    }else{
+                        detailsVo.setNameAudit(3);
+                    }
+                }else{
+                    detailsVo.setNameAudit(2);
+                }
+                if (imageAudit!=null){
+                    detailsVo.setImageAuditId(imageAudit.getId());
+                    if (imageAudit.getState()==1){
+                        detailsVo.setImageAudit(1);
+                    }else{
+                        detailsVo.setImageAudit(3);
+                    }
+                }else{
+                    detailsVo.setImageAudit(2);
+                }
             }
             return ResultUtil.success(detailsVo);
         } catch (Exception e) {
@@ -175,8 +235,33 @@
             }
             TAppUser byId = tauService.getById(appUserId);
             if (ToolUtil.isNotEmpty(userImage)) {
-                byId.setHeadImg(userImage);
-                tauService.updateById(byId);
+//                byId.setHeadImg(userImage);
+//                tauService.updateById(byId);
+                // 查询是否有待审核的头像
+                TUserAudit userAudit = userAuditService
+                        .lambdaQuery().eq(TUserAudit::getType, 2)
+                        .eq(TUserAudit::getAppUserId, appUserId)
+                        .ne(TUserAudit::getState, 2).last("limit 1").one();
+                if (userAudit!=null){
+                    userAudit.setState(1);
+                    userAudit.setHeadImg(userImage);
+                    UpdateWrapper<TUserAudit> tUserAuditUpdateWrapper = new UpdateWrapper<>();
+                    tUserAuditUpdateWrapper.eq("id",userAudit.getId());
+                    tUserAuditUpdateWrapper.set("state",1);
+                    tUserAuditUpdateWrapper.set("headImg",userImage);
+                    tUserAuditUpdateWrapper.set("remark",null);
+                    tUserAuditUpdateWrapper.set("auditId",null);
+                    tUserAuditUpdateWrapper.set("auditTime",null);
+                    userAuditService.update(tUserAuditUpdateWrapper);
+                }else{
+                    TUserAudit tUserAudit = new TUserAudit();
+                    tUserAudit.setAppUserId(appUserId);
+                    tUserAudit.setHeadImg(userImage);
+                    tUserAudit.setType(2);
+                    tUserAudit.setInsertTime(new Date());
+                    userAuditService.save(tUserAudit);
+
+                }
             } else {
                 ResultUtil.error("头像不能为空!");
             }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/AuditBatchDTO.java b/cloud-server-account/src/main/java/com/dsh/account/dto/AuditBatchDTO.java
new file mode 100644
index 0000000..dc6957e
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/AuditBatchDTO.java
@@ -0,0 +1,15 @@
+package com.dsh.account.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 批量审核用户昵称头像
+ */
+@Data
+public class AuditBatchDTO {
+    private List<Integer> ids;
+    private Integer state;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/UserAuditDTO.java b/cloud-server-account/src/main/java/com/dsh/account/dto/UserAuditDTO.java
new file mode 100644
index 0000000..76e0568
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/UserAuditDTO.java
@@ -0,0 +1,16 @@
+package com.dsh.account.dto;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class UserAuditDTO {
+    // 用户手机号
+    String phone;
+    // 状态 1待审核 2通过 3驳回
+    Integer state;
+    Page<Map<String, Object>> page;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TUserAudit.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TUserAudit.java
new file mode 100644
index 0000000..ab7faab
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TUserAudit.java
@@ -0,0 +1,101 @@
+package com.dsh.account.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 学员信息
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_audit")
+@ApiModel("用户头像昵称审核记录")
+public class TUserAudit {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    @ApiModelProperty("用户id")
+    private Integer appUserId;
+    /**
+     * 昵称
+     */
+    @TableField("name")
+    @ApiModelProperty("昵称")
+
+    private String name;
+    /**
+     * 头像
+     */
+    @TableField("headImg")
+    @ApiModelProperty("昵称")
+
+    private String headImg;
+    /**
+     * 驳回备注
+     */
+    @TableField("remark")
+    @ApiModelProperty("昵称")
+
+    private String remark;
+    /**
+     审核状态1待审核 2审核通过 3驳回
+     */
+    @TableField("state")
+    @ApiModelProperty("审核状态1待审核 2审核通过 3驳回")
+
+    private Integer state;
+    /**
+     * 审核人id
+     */
+    @TableField("auditId")
+    @ApiModelProperty("审核人id")
+
+    private Integer auditId;
+    /**
+     * 审核时间
+     */
+    @TableField("auditTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("审核时间")
+
+    private Date auditTime;
+    /**
+     * 类型 1昵称 2头像
+     */
+    @TableField("type")
+    @ApiModelProperty("审核类型 1昵称 2头像")
+
+    private Integer type;
+    /**
+     * 添加时间
+     */
+    @TableField("insertTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date insertTime;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/UserAuditMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/UserAuditMapper.java
new file mode 100644
index 0000000..717acd8
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/UserAuditMapper.java
@@ -0,0 +1,24 @@
+package com.dsh.account.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.account.dto.UserAuditDTO;
+import com.dsh.account.entity.TCityManager;
+import com.dsh.account.entity.TUserAudit;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 教练 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-05
+ */
+public interface UserAuditMapper extends BaseMapper<TUserAudit> {
+
+    List<Map<String, Object>> listAudit(@Param("query") UserAuditDTO dto);
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/AppUserDetailsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/AppUserDetailsVo.java
index 72e05ca..25047d6 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/AppUserDetailsVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/AppUserDetailsVo.java
@@ -34,4 +34,12 @@
     @ApiModelProperty(value = "1:需要修改,")
     private Integer needChange;
 
+    @ApiModelProperty(value = "新增字段:用户头像审核状态 1展示审核中 2不展示 3展示审核驳回")
+    private Integer imageAudit;
+    @ApiModelProperty(value = "新增字段:用户头像审核记录id")
+    private Integer imageAuditId;
+    @ApiModelProperty(value = "新增字段:用户昵称审核状态 1展示审核中 2不展示 3展示审核驳回")
+    private Integer nameAudit;
+    @ApiModelProperty(value = "新增字段:用户昵称审核记录id")
+    private Integer nameAuditId;
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/UserAuditService.java b/cloud-server-account/src/main/java/com/dsh/account/service/UserAuditService.java
new file mode 100644
index 0000000..a5718fa
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/UserAuditService.java
@@ -0,0 +1,22 @@
+package com.dsh.account.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.account.dto.UserAuditDTO;
+import com.dsh.account.entity.TCityManager;
+import com.dsh.account.entity.TUserAudit;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 教练 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-05
+ */
+public interface UserAuditService extends IService<TUserAudit> {
+
+    List<Map<String, Object>> listAudit(UserAuditDTO dto);
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 1ab1194..ad1e5a5 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -14,6 +14,7 @@
 import com.alipay.api.response.AlipayTradeRoyaltyRelationBindResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.account.dto.*;
 import com.dsh.account.entity.*;
@@ -42,10 +43,7 @@
 import com.dsh.account.model.vo.classDetails.RegisteredCourse;
 import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
 import com.dsh.account.model.vo.userBenefitDetail.*;
-import com.dsh.account.service.IRefereeService;
-import com.dsh.account.service.TAppGiftService;
-import com.dsh.account.service.TAppUserService;
-import com.dsh.account.service.UserIntegralChangesService;
+import com.dsh.account.service.*;
 import com.dsh.account.util.*;
 import com.dsh.account.util.akeylogin.Md5Util;
 import com.dsh.account.util.wx.WxV3PayConfig;
@@ -153,6 +151,8 @@
 
     @Resource
     private TAppUserMapper appUserMapper;
+    @Autowired
+    private UserAuditService userAuditService;
 
     @Autowired
     private TAppGiftService appGiftService;
@@ -162,6 +162,8 @@
 
 
     private String aliAppid = "2021004105665036";//支付宝appid
+    // 默认头像
+    private String headImg = "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/f7fbeaed277a45ab9591b70dc5699cab.jpg";
 
     private String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥
 
@@ -463,8 +465,12 @@
         tAppUser.setProvinceCode("");
         tAppUser.setCity("");
         tAppUser.setCityCode("");
+        tAppUser.setHeadImg(headImg);
         // 注册用户
         int insert = this.baseMapper.insert(tAppUser);
+        String s = generateNickname(tAppUser.getId());
+        tAppUser.setName(s);
+        this.baseMapper.updateById(tAppUser);
         // 介绍有礼
         if (addAppUserVo.getReferralUserId() != null || ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())) {
             if (ToolUtil.isEmpty(addAppUserVo.getLat()) || ToolUtil.isEmpty(addAppUserVo.getLon())) {
@@ -559,8 +565,12 @@
             tAppUser.setPassword(Md5Util.MD5Encode("111111", null));
             tAppUser.setIsVip(0);
             tAppUser.setState(1);
+            tAppUser.setHeadImg(headImg);
             tAppUser.setInsertTime(new Date());
             this.baseMapper.insert(tAppUser);
+            String s = generateNickname(tAppUser.getId());
+            tAppUser.setName(s);
+            this.baseMapper.updateById(tAppUser);
         }
         if (tAppUser.getState() == 2) {
             return ResultUtil.error("您的账号已被冻结", "");
@@ -589,8 +599,7 @@
                 tAppUser.setPassword(Md5Util.MD5Encode("111111", null));
                 tAppUser.setIsVip(0);
 //                tAppUser.setName(loginWechatVo.getNickname());
-                tAppUser.setName("用户"+loginWechatVo.getPhone().substring(loginWechatVo.getPhone().length() - 4));
-                tAppUser.setHeadImg(loginWechatVo.getHeadimgurl());
+                tAppUser.setHeadImg(headImg);
                 tAppUser.setGender(loginWechatVo.getSex());
                 tAppUser.setState(1);
                 tAppUser.setInsertTime(new Date());
@@ -599,6 +608,11 @@
                 tAppUser.setCity("");
                 tAppUser.setCityCode("");
                 this.baseMapper.insert(tAppUser);
+                // 设置用户昵称为用户+id 保留6位小数 补0
+                String s = generateNickname(tAppUser.getId());
+                tAppUser.setName(s);
+                this.baseMapper.updateById(tAppUser);
+
             }
         }
         if (tAppUser.getState() == 2) {
@@ -624,6 +638,26 @@
         }
         return ResultUtil.success(map);
     }
+    /**
+     * 根据用户ID生成固定格式的昵称
+     * @param userId 用户ID
+     * @return 格式化的昵称
+     */
+    public static String generateNickname(Integer userId) {
+        if (userId == null) {
+            return null;
+        }
+
+        // 将用户ID转换为字符串
+        String userIdStr = String.valueOf(userId);
+
+        // 使用String.format确保总长度为6位,不足的前面补0
+        String formattedId = String.format("%06d", Long.parseLong(userIdStr));
+
+        // 返回"用户" + 格式化后的ID
+        return "用户" + formattedId;
+    }
+
 
     /**
      * 获取JWT token和存储个人信息
@@ -1277,6 +1311,34 @@
     @Override
     public ResultUtil<String> updateInfo(UpdateInfoDto dto, Integer uid) {
         TAppUser tAppUser = appUserMapper.selectById(uid);
+        if (StringUtils.hasLength(dto.getName())){
+            if (!tAppUser.getName().equals(dto.getName())){
+                TUserAudit userAudit = userAuditService
+                        .lambdaQuery().eq(TUserAudit::getType, 1)
+                        .eq(TUserAudit::getAppUserId, tAppUser.getId())
+                        .ne(TUserAudit::getState, 2).last("limit 1").one();
+                if (userAudit!=null){
+                    userAudit.setState(1);
+                    userAudit.setName(dto.getName());
+                    UpdateWrapper<TUserAudit> tUserAuditUpdateWrapper = new UpdateWrapper<>();
+                    tUserAuditUpdateWrapper.eq("id",userAudit.getId());
+                    tUserAuditUpdateWrapper.set("state",1);
+                    tUserAuditUpdateWrapper.set("name",dto.getName());
+                    tUserAuditUpdateWrapper.set("remarks",null);
+                    tUserAuditUpdateWrapper.set("auditId",null);
+                    tUserAuditUpdateWrapper.set("auditTime",null);
+                    userAuditService.update(tUserAuditUpdateWrapper);
+                }else{
+                    TUserAudit tUserAudit = new TUserAudit();
+                    tUserAudit.setAppUserId(tAppUser.getId());
+                    tUserAudit.setName(dto.getName());
+                    tUserAudit.setType(1);
+                    tUserAudit.setInsertTime(new Date());
+                    userAuditService.save(tUserAudit);
+
+                }
+            }
+        }
         if (ToolUtil.isNotEmpty(dto.getName())) {
             tAppUser.setName(dto.getName());
         }
@@ -1293,6 +1355,7 @@
         if (ToolUtil.isNotEmpty(dto.getGender())) {
             tAppUser.setGender(dto.getGender());
         }
+        tAppUser.setName(null);
         appUserMapper.updateById(tAppUser);
         return ResultUtil.success();
     }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserAuditServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserAuditServiceImpl.java
new file mode 100644
index 0000000..f8c9913
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserAuditServiceImpl.java
@@ -0,0 +1,31 @@
+package com.dsh.account.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.account.dto.UserAuditDTO;
+import com.dsh.account.entity.TCityManager;
+import com.dsh.account.entity.TUserAudit;
+import com.dsh.account.mapper.CityMapper;
+import com.dsh.account.mapper.UserAuditMapper;
+import com.dsh.account.service.CityService;
+import com.dsh.account.service.UserAuditService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 教练 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-05
+ */
+@Service
+public class UserAuditServiceImpl extends ServiceImpl<UserAuditMapper, TUserAudit> implements UserAuditService {
+
+    @Override
+    public List<Map<String, Object>> listAudit(UserAuditDTO dto) {
+        return this.baseMapper.listAudit(dto);
+    }
+}
diff --git a/cloud-server-account/src/main/resources/mapper/UserAuditMapper.xml b/cloud-server-account/src/main/resources/mapper/UserAuditMapper.xml
new file mode 100644
index 0000000..80bfe15
--- /dev/null
+++ b/cloud-server-account/src/main/resources/mapper/UserAuditMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.account.mapper.UserAuditMapper">
+
+
+    <select id="listAudit" resultType="java.util.Map">
+        select t1.*,t2.id as userId,t2.phone  from t_user_audit t1
+                    left join t_app_user t2 on t1.appUserId = t2.id
+        where
+            1=1
+        <if test="query.phone != null and query.phone !=''">
+            and t2.phone like concat("%",#{query.phone},"%")
+        </if>
+        <if test="query.state != null">
+            and t1.state = #{query.state}
+        </if>
+    </select>
+</mapper>
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index 9cf424c..f251986 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -1780,6 +1780,7 @@
                 map.put("userId", pointsMerchandise.getUserId());
                 map.put("status", pointsMerchandise.getStatus());
                 map.put("payTime", sdf.format(pointsMerchandise.getPaymentTime()));
+                map.put("orderNumber", pointsMerchandise.getOrderNumber());
                 mapList.add(map);
             }
         }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/SalesDetailVO.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/SalesDetailVO.java
index fb3c0d2..b404b22 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/SalesDetailVO.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/SalesDetailVO.java
@@ -38,4 +38,5 @@
     private String studentId;          // 绑定人员ID
     private Integer useTimes;           // 已用次数
     private Integer status;             // 状态(1:使用中,2:已退款)
+    private String orderNumber;             // 支付流水号
 }
\ No newline at end of file
diff --git a/cloud-server-activity/src/main/resources/mapper/PayHuiminMapper.xml b/cloud-server-activity/src/main/resources/mapper/PayHuiminMapper.xml
index 91304d3..52aaa37 100644
--- a/cloud-server-activity/src/main/resources/mapper/PayHuiminMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/PayHuiminMapper.xml
@@ -16,7 +16,8 @@
         tph.endTime,
         tph.studentId,
         thc.id as carId,
-        tph.status
+        tph.status,
+        tph.orderNumber
         FROM
         t_pay_huimin tph
         LEFT JOIN t_huimin_card thc ON tph.cardId = thc.id
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
index 3e695f7..038f8aa 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
@@ -73,4 +73,6 @@
     private Integer classHours;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date insertTime;
+    // 三方支付流水号
+    private String orderNumber;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
index 6967502..facc7a5 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
@@ -63,8 +63,8 @@
 
     private String key = "6f5e0c2dcabfa9c27b5da5836a362fef";//微信商户号
 
-//    private String callbackPath = "https://online.daowepark.com:443/course";//支付回调网关地址
-private String callbackPath = "http://221.182.45.100:56666/course";//支付回调网关地址
+    private String callbackPath = "https://online.daowepark.com:443/course";//支付回调网关地址
+//private String callbackPath = "http://221.182.45.100:56666/course";//支付回调网关地址
 
     private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径
 
diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
index 51e74da..57134d4 100644
--- a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
@@ -27,7 +27,7 @@
         t1.id,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.studentIds as studentId,t1.appUserId,t1.cashPayment,t1.playPaiCoin,
         t1.payUserName as buyTypeName, t1.classHours as classHours,t1.insertTime as insertTime,t1.coursePackageId as coursePackageId,
         CONCAT(t2.province,t2.city) as provinceAndCity,t2.coursePackageTypeId,t2.storeId,t2.name as coursePackage,
-        t3.name as coursePackageType
+        t3.name as coursePackageType,t1.orderNumber
         from t_course_package_order t1
         left join t_course_package t2 on t1.coursePackageId = t2.id
         left join t_course_package_type t3 on t2.coursePackageTypeId = t3.id
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
index b7d2aae..729f091 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
@@ -12,6 +12,7 @@
 import com.dsh.guns.modular.system.model.dto.GiftSearchDto;
 import com.dsh.guns.modular.system.model.dto.SelectDto;
 import com.dsh.guns.modular.system.model.dto.UpdateIntegral;
+import com.dsh.guns.modular.system.model.dto.UserAuditDTO;
 import com.dsh.guns.modular.system.util.ResultUtil;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -22,11 +23,28 @@
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @FeignClient("mb-cloud-account")
 public interface AppUserClient {
 
-
+    /**
+     * 根据介绍有礼id查询当前活动参与次数
+     */
+    @ResponseBody
+    @PostMapping("/user/listAudit")
+    public List<Map<String, Object>> listAudit(@RequestBody UserAuditDTO dto);
+    @ResponseBody
+    @PostMapping("/user/audit")
+    public void audit(@RequestBody TUserAudit dto);
+    @ResponseBody
+    @PostMapping("/user/auditBatch")
+    public void auditBatch(@RequestBody AuditBatchDTO dto);
+    /**
+     * 获取审核详情
+     */
+    @GetMapping("/user/getAuditById/{id}")
+    public TUserAudit getAuditById(@PathVariable("id")Integer id) ;
     /**
      * 根据介绍有礼id查询当前活动参与次数
      */
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/AuditBatchDTO.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/AuditBatchDTO.java
new file mode 100644
index 0000000..f14c17f
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/AuditBatchDTO.java
@@ -0,0 +1,15 @@
+package com.dsh.course.feignClient.account.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 批量审核用户昵称头像
+ */
+@Data
+public class AuditBatchDTO {
+    private List<Integer> ids;
+    private Integer state;
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/TUserAudit.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/TUserAudit.java
new file mode 100644
index 0000000..db68fc9
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/TUserAudit.java
@@ -0,0 +1,82 @@
+package com.dsh.course.feignClient.account.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 学员信息
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_audit")
+public class TUserAudit {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    private Integer appUserId;
+    /**
+     * 昵称
+     */
+    @TableField("name")
+    private String name;
+    /**
+     * 头像
+     */
+    @TableField("headImg")
+    private String headImg;
+    /**
+     * 驳回备注
+     */
+    @TableField("remark")
+    private String remark;
+    /**
+     审核状态1待审核 2审核通过 3驳回
+     */
+    @TableField("state")
+    private Integer state;
+    /**
+     * 审核人id
+     */
+    @TableField("auditId")
+    private Integer auditId;
+    /**
+     * 审核时间
+     */
+    @TableField("auditTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date auditTime;
+    /**
+     * 类型 1昵称 2头像
+     */
+    @TableField("type")
+    private Integer type;
+    /**
+     * 添加时间
+     */
+    @TableField("insertTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date insertTime;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppAuditController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppAuditController.java
new file mode 100644
index 0000000..274e16d
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TAppAuditController.java
@@ -0,0 +1,110 @@
+package com.dsh.guns.modular.system.controller.code;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.feignClient.account.AppUserClient;
+import com.dsh.course.feignClient.account.CityManagerClient;
+import com.dsh.course.feignClient.account.StoreStaffClient;
+import com.dsh.course.feignClient.account.StudentClient;
+import com.dsh.course.feignClient.account.model.*;
+import com.dsh.course.feignClient.activity.BodySideAppointmentClient;
+import com.dsh.course.feignClient.communityWorldCup.Model.StoreIds;
+import com.dsh.course.feignClient.communityWorldCup.WorldCupClient;
+import com.dsh.course.feignClient.competition.CompetitionClient;
+import com.dsh.course.feignClient.competition.model.ListQuery;
+import com.dsh.course.feignClient.course.CoursePackageClient;
+import com.dsh.course.feignClient.other.BallClient;
+import com.dsh.course.feignClient.other.StoreClient;
+import com.dsh.guns.config.UserExt;
+import com.dsh.guns.core.common.constant.factory.PageFactory;
+import com.dsh.guns.modular.system.controller.util.MD5;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.model.dto.UpdateIntegral;
+import com.dsh.guns.modular.system.model.dto.UserAuditDTO;
+import com.dsh.guns.modular.system.service.*;
+import com.dsh.guns.modular.system.util.ResultUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 用户管理控制器
+ */
+@Controller
+@RequestMapping("/userAudit")
+public class TAppAuditController {
+    private String PREFIX = "/system/userAudit/";
+    @Autowired
+    private AppUserClient appUserClient;
+
+
+    /**
+     * 用户头像昵称审核
+     */
+    @RequestMapping("")
+    public String index(Model model) {
+        return PREFIX + "userAudit.html";
+    }
+    /**
+     * 获取列表数据
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/list")
+    public List<Map<String, Object>> list( String phone, Integer state){
+        UserAuditDTO userAuditDTO = new UserAuditDTO();
+        userAuditDTO.setState( state);
+        userAuditDTO.setPhone(phone);
+        List<Map<String, Object>> res = appUserClient.listAudit(userAuditDTO);
+        for (Map<String, Object> re : res) {
+            // 循环打印
+            System.out.println(re.get("id"));
+        }
+        return res;
+    }
+    /**
+     * 审核页面
+     */
+    @RequestMapping("/auditHtml/{id}")
+    public String auditHtml(Model model,@PathVariable("id") Integer id) {
+        TUserAudit auditById = appUserClient.getAuditById(id);
+        model.addAttribute("audit", auditById);
+        return PREFIX + "userAudit_audit.html";
+    }
+    @RequestMapping("/auditInfo/{id}")
+    public String auditInfo(Model model,@PathVariable("id")Integer id) {
+        TUserAudit auditById = appUserClient.getAuditById(id);
+        model.addAttribute("audit", auditById);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String formattedDate = simpleDateFormat.format(auditById.getAuditTime());
+        model.addAttribute("auditTime", formattedDate);
+        return PREFIX + "userAudit_info.html";
+    }
+    /**
+     * 单审核操作
+     */
+    @RequestMapping("/audit")
+    public ResultUtil audit(@RequestBody TUserAudit dto) {
+        appUserClient.audit(dto);
+        return ResultUtil.success();
+    }
+    /**
+     * 批量审核
+     */
+    @RequestMapping("/auditBatch")
+    public ResultUtil auditBatch(@RequestBody AuditBatchDTO auditBatchDTO) {
+        appUserClient.auditBatch(auditBatchDTO);
+        return ResultUtil.success();
+    }
+
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
index ea5b9e5..0048826 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
@@ -41,6 +41,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -531,6 +532,11 @@
                     incomeVOS.add(temp);
                 }
             }
+        // 推荐:一行代码解决
+        incomeVOS.sort(Comparator.comparing(
+                IncomeVO::getInsertTime,
+                Comparator.nullsLast(Comparator.reverseOrder())
+        ));
         return incomeVOS;
     }
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
index a24303a..9d5af00 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
@@ -69,4 +69,6 @@
     private Integer buyType;
     // 当状态为手动支付时使用 用于显示手动支付时显示操作人
     private String buyTypeName;
+    // 三方支付流水号
+    private String orderNumber;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeVO.java
index b42bef9..4887fa6 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeVO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeVO.java
@@ -31,6 +31,8 @@
     private BigDecimal amount;
     private Integer incomeType;
     private Integer state;
+    // 微信/支付宝流水号
+    private String code;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date insertTime;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SalesDetailVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SalesDetailVO.java
index 4c416e8..3e917ef 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SalesDetailVO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SalesDetailVO.java
@@ -37,4 +37,5 @@
     private String studentId;          // 绑定人员ID
     private Integer useTimes;           // 已用次数
     private Integer status;             // 状态(1:使用中,2:已退款)
+    private String orderNumber;             // 支付流水号
 }
\ No newline at end of file
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/UserAuditDTO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/UserAuditDTO.java
new file mode 100644
index 0000000..0d0c3d6
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/UserAuditDTO.java
@@ -0,0 +1,17 @@
+package com.dsh.guns.modular.system.model.dto;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class UserAuditDTO {
+    // 用户手机号
+    String phone;
+    // 状态 1待审核 2通过 3驳回
+    Integer state;
+    Page<Map<String, Object>> page;
+
+}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/appUser/TAppUser_addStudent.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/appUser/TAppUser_addStudent.html
index bfc78f4..9f4d3e4 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/appUser/TAppUser_addStudent.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/appUser/TAppUser_addStudent.html
@@ -85,13 +85,13 @@
                 </div>
             </div>
             <div class="form-group" >
-                <label class="col-sm-3 control-label">*联系电话:</label>
+                <label class="col-sm-3 control-label">联系电话:</label>
                 <div class="col-sm-9" style="display: flex;">
                     <input style="width: 300px" class="form-control" id="phone"  placeholder="请输入联系电话" type="text">
                 </div>
             </div>
             <div class="form-group" >
-                <label class="col-sm-3 control-label">*身份证号:</label>
+                <label class="col-sm-3 control-label">身份证号:</label>
                 <div class="col-sm-9" style="display: flex;">
                     <input style="width: 300px" class="form-control" id="idCard"  placeholder="请输入身份证号" type="text">
                 </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit.html
new file mode 100644
index 0000000..6518b43
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit.html
@@ -0,0 +1,40 @@
+@layout("/common/_container.html"){
+<div class="row">
+	<div class="col-sm-12">
+		<div class="ibox float-e-margins">
+			<div class="ibox-title">
+				<h5>用户信息审核</h5>
+			</div>
+			<div class="ibox-content">
+				<div class="row row-lg">
+					<div class="col-sm-12">
+						<div class="row">
+							<div class="col-sm-3">
+								<#NameCon id="phone" name="联系电话" />
+							</div>
+							<div class="col-sm-3">
+								<#SelectCon id="state" name="状态" >
+									<option value="">全部</option>
+									<option value="1">待审核</option>
+									<option value="2">已通过</option>
+									<option value="3">已驳回</option>
+								</#SelectCon>
+							</div>
+							<div class="col-sm-3">
+								<#button name="搜索" icon="fa-search" clickFun="DriverApplyRefund.search()"/>
+								<#button name="重置" icon="fa-trash" clickFun="DriverApplyRefund.resetSearch()" space="true"/>
+							</div>
+						</div>
+						<div class="hidden-xs" id="DriverApplyRefundTableToolbar" role="group">
+							<#button name="批量审核" icon="fa-plus" clickFun="DriverApplyRefund.auditBatch()"/>
+						</div>
+						<#table id="DriverApplyRefundTable"/>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<script src="${ctxPath}/modular/system/userAudit/userAudit.js"></script>
+
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_audit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_audit.html
new file mode 100644
index 0000000..f6c1740
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_audit.html
@@ -0,0 +1,62 @@
+@layout("/common/_container.html"){
+
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="userInfoForm">
+            <input type="hidden" id="id" value="${audit.id}">
+            <div class="row">
+                <div class="form-group">
+                    @if(audit.type == 1){
+                    <label class="col-sm-3 control-label">昵称:</label>
+                    <div class="col-sm-9">
+                        <input type="text" id="name" value="${audit.name}"/>
+                    </div>
+                    @}
+                    @if(audit.type == 2){
+                    <label class="col-sm-3 control-label">头像:</label>
+                    <div class="col-sm-9">
+                        <div><img width="100px" height="100px" id="img" src="${audit.headImg}"></div>
+                    </div>
+                    @}
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">审核:</label>
+                    <div class="col-sm-2" style="display: flex;align-items: center;">
+                        <div class="radio radio-info radio-inline">
+                            <input type="radio" id="areaType1" value="2" name="areaType" checked
+                                   onclick="DriverApplyRefund.areaTypeClick(2)">
+                            <label for="areaType1"> 通过 </label>
+                        </div>
+                        <div class="radio radio-success radio-inline">
+                            <input type="radio" id="areaType2" value="3" name="areaType"
+                                   onclick="DriverApplyRefund.areaTypeClick(3)">
+                            <label for="areaType2"> 驳回 </label>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group" id="remarkP" hidden>
+                    <label class="col-sm-3 control-label">审核备注:</label>
+                    <div class="col-sm-9">
+                        <textarea id="remark" style="height: 203px; width: 506px;">${audit.remark}</textarea>
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="确认" id="ensure" icon="fa-check"
+                    clickFun="DriverApplyRefund.audit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser"
+                    clickFun="DriverApplyRefund.close()"/>
+                </div>
+            </div>
+
+
+        </div>
+    </div>
+</div>
+
+
+<script src="${ctxPath}/modular/system/userAudit/userAudit_info.js"></script>
+
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_info.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_info.html
new file mode 100644
index 0000000..098b301
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/userAudit/userAudit_info.html
@@ -0,0 +1,80 @@
+@layout("/common/_container.html"){
+
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="userInfoForm">
+            <input type="hidden" id="id" value="${audit.id}">
+            <input type="hidden" id="state" value="${audit.state}">
+            <div class="row">
+                <div class="form-group">
+                    @if(audit.type == 1){
+                    <label class="col-sm-3 control-label">昵称:</label>
+                    <div class="col-sm-9">
+                        <input type="text" id="name" value="${audit.name}"/>
+                    </div>
+                    @}
+                    @if(audit.type == 2){
+                    <label class="col-sm-3 control-label">头像:</label>
+                    <div class="col-sm-9">
+                        <div><img width="100px" height="100px" id="img" src="${audit.headImg}"></div>
+                    </div>
+                    @}
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">审核:</label>
+                    <div class="col-sm-2" style="display: flex;align-items: center;">
+                        <div class="radio radio-info radio-inline">
+                            <input type="radio" id="areaType1" value="2" name="areaType" checked
+                                   onclick="DriverApplyRefund.areaTypeClick(2)">
+                            <label for="areaType1"> 通过 </label>
+                        </div>
+                        <div class="radio radio-success radio-inline">
+                            <input type="radio" id="areaType2" value="3" name="areaType"
+                                   onclick="DriverApplyRefund.areaTypeClick(3)">
+                            <label for="areaType2"> 驳回 </label>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group" id="remarkP" hidden>
+                    <label class="col-sm-3 control-label">审核备注:</label>
+                    <div class="col-sm-9">
+                        <textarea id="remark" style="height: 203px; width: 506px;">${audit.remark}</textarea>
+                    </div>
+                </div>
+                <div class="form-group" >
+                    <label class="col-sm-3 control-label">审核时间:</label>
+                    <div class="col-sm-9">
+                        <input id="auditTime" disabled value="${auditTime}"/>
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="danger" name="关闭" id="cancel" icon="fa-eraser"
+                    clickFun="DriverApplyRefund.close()"/>
+                </div>
+            </div>
+
+
+        </div>
+    </div>
+</div>
+
+
+<script src="${ctxPath}/modular/system/userAudit/userAudit_info.js"></script>
+<script>
+    window.onload = function () {
+        var OBJradio = document.querySelectorAll('input[type="radio"]');
+        console.log(OBJradio)
+        for (i = 0; i < OBJradio.length; i++) {//循环查找这个radio
+            if ($("#state").val() == OBJradio[i].value) {//判断是否与radio的值相同
+                OBJradio[i].checked = true//修改选中状态
+            }
+        }
+        if ($("#state").val() == 3) {
+            $("#remarkP").show();
+        }
+    }
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js b/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
index edf6462..316d3b2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
@@ -472,15 +472,6 @@
         Feng.info("请输入体重")
         return;
     }
-    if($("#phone").val()=='' ){
-        Feng.info("请输入联系方式")
-        return;
-    }
-    if($("#idCard").val()=='' ){
-        Feng.info("请输入身份证号")
-        return;
-    }
-
 
     $.ajax({
         url: Feng.ctxPath + "/appUser/addAppUserStudent" ,
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 04ebd09..df3cb6f 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
@@ -40,6 +40,8 @@
         { title: '姓名', field: 'booker', visible: true, align: 'center', valign: 'middle'},
         { title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'},
         { title: '预约时间段', field: 'times', visible: true, align: 'center', valign: 'middle'},
+        { title: '支付流水号', field: 'payOrderNo', visible: true, align: 'center', valign: 'middle'},
+
         { title: '支付方式', field: 'payType', visible: true, align: 'center', valign: 'middle'},
         {
             title: '金额',
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
index c9f6f43..019d315 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
@@ -29,6 +29,7 @@
             }
             },
         {title:  '支付方式', field: 'buyTypeName', visible: true, align: 'center', valign: 'middle'},
+        {title:  '支付流水号', field: 'orderNumber', visible: true, align: 'center', valign: 'middle'},
         {title:  '总金额', field: 'originalPrice', visible: true, align: 'center', valign: 'middle'},
         {title:  '优惠金额', field: 'discountAmount', visible: true, align: 'center', valign: 'middle'},
         {title:  '支付价格', field: 'cashPayment', visible: true, align: 'center', valign: 'middle'},
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js
index 9aab871..be93d35 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js
@@ -17,6 +17,7 @@
         {title: '姓名', field: 'name', visible: true, align: 'center', valign: 'middle'},
         {title: '联系方式', field: 'phone', visible: true, align: 'center', valign: 'middle'},
         {title: '购买时间', field: 'payTime', visible: true, align: 'center', valign: 'middle'},
+        {title: '支付流水号', field: 'orderNumber', visible: true, align: 'center', valign: 'middle'},
         {title: '使用状态', field: 'status', visible: true, align: 'center', valign: 'middle',
             formatter: function (value, row, index) {
                 return {1: "未使用", 2: "已核销"}[value]
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tPayHuimin/tPayHuimin.js b/cloud-server-management/src/main/webapp/static/modular/system/tPayHuimin/tPayHuimin.js
index 643f5d5..850d901 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tPayHuimin/tPayHuimin.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tPayHuimin/tPayHuimin.js
@@ -21,6 +21,7 @@
                     return {1: '年度卡', 2: '年内卡'}[value];
                 }},
             {title: '售卖金额', field: 'salesMoney', visible: true, align: 'center', valign: 'middle'},
+            {title: '支付流水号', field: 'orderNumber', visible: true, align: 'center', valign: 'middle'},
             {title: '所属运营商', field: 'operatorName', visible: true, align: 'center', valign: 'middle'},
             {title: '可用门店', field: 'storeName', visible: true, align: 'center', valign: 'middle',
                 cellStyle:formatTableUnit,
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit.js b/cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit.js
new file mode 100644
index 0000000..959fdfb
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit.js
@@ -0,0 +1,131 @@
+/**
+ * 管理初始化
+ */
+var DriverApplyRefund = {
+	id: "DriverApplyRefundTable",	//表格id
+	seItem: null,		//选中的条目
+	table: null,
+	layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+DriverApplyRefund.initColumn = function () {
+	return [
+		{field: 'selectItem', checkbox: true},
+		{title: '', field: 'id', visible: false, align: 'center', valign: 'middle'},
+		{title: '用户编号', field: 'userId', visible: true, align: 'center', valign: 'middle'},
+		{title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'},
+		{title: '审核字段', field: 'type', visible: true, align: 'center', valign: 'middle',
+			formatter: function (value, row) {
+				switch (value) {
+					case 1:
+						return "昵称";
+					case 2:
+						return "头像";
+
+				}
+			}
+		},
+		{title: '头像', field: 'headImg', visible: true, align: 'center', valign: 'middle',
+			formatter: function (value, row) {
+				if (row.headImg == null || row.headImg == '') {
+					return '<button/></button>';
+				} else {
+					var temp = row.headImg
+					return '<button onclick="lookBigImg(\'' + temp + '\')"><img style="width: 90px;height:50px;"  src="' + row.headImg + '" /></button>';
+				}
+			},
+			events: 'operateEvents'},
+		{title: '昵称', field: 'name', visible: true, align: 'center', valign: 'middle'},
+		{title: '审核状态', field: 'state', visible: true, align: 'center', valign: 'middle',
+			formatter: function (value, row) {
+				switch (value) {
+					case 1:
+						return "待审核";
+					case 2:
+						return "已通过";
+					case 3:
+						return "已驳回";
+				}
+			}
+		},
+		{title: '提交时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'},
+		{title: '审核时间', field: 'auditTime', visible: true, align: 'center', valign: 'middle'},
+		{title: '操作', field: 'state', visible: true, align: 'center', valign: 'middle',
+			formatter: function (data,row) {
+				var btn = "";
+				if(data==1) {
+					var str = '<button class="btn btn-outline btn-primary" onclick="DriverApplyRefund.audit('+row.id+')" >审核</button>'
+					btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="" onfocus="TUser.tooltip()">' + str + '</p>']
+				}else {
+					var str = '<button class="btn btn-outline btn-primary" onclick="DriverApplyRefund.info(' + row.id + ')" >查看</button>'
+					btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="" onfocus="TUser.tooltip()">' + str + '</p>']
+				}
+				return btn;
+			}
+		},
+	];
+};
+
+DriverApplyRefund.audit = function (e) {
+	var index = layer.open({
+		type: 2,
+		title: '审核',
+		area: ['100%', '100%'], //宽高
+		fix: false, //不固定
+		maxmin: true,
+		content: Feng.ctxPath + '/userAudit/auditHtml/'+e
+	});
+	this.layerIndex = index;
+};
+
+DriverApplyRefund.info = function (e) {
+	var index = layer.open({
+		type: 2,
+		title: '详情',
+		area: ['100%', '100%'], //宽高
+		fix: false, //不固定
+		maxmin: true,
+		content: Feng.ctxPath + '/userAudit/auditInfo/'+e
+	});
+	this.layerIndex = index;
+};
+/**
+ * 检查是否选中
+ */
+DriverApplyRefund.check = function () {
+	var selected = $('#' + this.id).bootstrapTable('getSelections');
+	if(selected.length == 0){
+		Feng.info("请先选中表格中的某一记录!");
+		return false;
+	}
+	DriverApplyRefund.seItem = selected[0];
+	return true;
+};
+
+
+/**
+ * 打开编辑
+ */
+/**
+ * 查询列表
+ */
+DriverApplyRefund.search = function () {
+	var queryData = {};
+	queryData['phone'] = $("#phone").val();
+	queryData['state'] = $("#status").val();
+	DriverApplyRefund.table.refresh({query: queryData});
+};
+DriverApplyRefund.resetSearch = function () {
+	$("#phone").val("");
+	$("#state").val("");
+	DriverApplyRefund.search();
+};
+$(function () {
+	var defaultColunms = DriverApplyRefund.initColumn();
+	var table = new BSTable(DriverApplyRefund.id, "/userAudit/list", defaultColunms);
+	table.setPaginationType("client");
+	DriverApplyRefund.table = table.init();
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit_info.js b/cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit_info.js
new file mode 100644
index 0000000..8c61266
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/userAudit/userAudit_info.js
@@ -0,0 +1,113 @@
+/**
+ * 管理初始化
+ */
+var DriverApplyRefund = {
+	id: "DriverApplyRefundTable",	//表格id
+	seItem: null,		//选中的条目
+	table: null,
+	layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+/**
+ * 关闭此对话框
+ */
+DriverApplyRefund.close = function () {
+	parent.layer.close(window.parent.DriverApplyRefund.layerIndex);
+};
+DriverApplyRefund.audit = function (e) {
+	const data1 = {
+		id:null,
+		state:null,
+		remark:""
+
+	};
+	data1.id = $("#id").val();
+	var state = $("input[name='areaType']:checked").val();
+	data1.state = state;
+	if (state==3){
+		data1.remark = $("#remark").val();
+	}
+	$.ajax({
+		url: Feng.ctxPath + "/userAudit/audit",
+		type: "POST",
+		contentType: "application/json", // 设置请求头的 Content-Type
+		data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
+		success: function(response) {
+			Feng.success("操作成功!");
+			window.parent.DriverApplyRefund.table.refresh();
+			DriverApplyRefund.close();
+
+		},
+		error: function(xhr, status, error) {
+			Feng.success("操作成功!");
+			window.parent.DriverApplyRefund.table.refresh();
+			DriverApplyRefund.close();
+
+		}
+	});
+};
+DriverApplyRefund.areaTypeClick = function (e) {
+	if (2 == e){
+		// 通过
+		$("#remarkP").hide();
+	} else if (3 == e){
+		// 驳回
+		$("#remarkP").show();
+	}
+};
+
+DriverApplyRefund.info = function (e) {
+	var index = layer.open({
+		type: 2,
+		title: '详情',
+		area: ['100%', '100%'], //宽高
+		fix: false, //不固定
+		maxmin: true,
+		content: Feng.ctxPath + '/userAudit/auditInfo/'+e
+	});
+	this.layerIndex = index;
+};
+/**
+ * 检查是否选中
+ */
+DriverApplyRefund.check = function () {
+	var selected = $('#' + this.id).bootstrapTable('getSelections');
+	if(selected.length == 0){
+		Feng.info("请先选中表格中的某一记录!");
+		return false;
+	}
+	DriverApplyRefund.seItem = selected[0];
+	return true;
+};
+
+
+/**
+ * 打开编辑
+ */
+/**
+ * 查询列表
+ */
+DriverApplyRefund.search = function () {
+	var queryData = {};
+	queryData['code'] = $("#code").val();
+	queryData['name'] = $("#name").val();
+	queryData['phone'] = $("#phone").val();
+	queryData['status'] = $("#status").val();
+	DriverApplyRefund.table.refresh({query: queryData});
+};
+DriverApplyRefund.resetSearch = function () {
+	$("#code").val("");
+	$("#name").val("");
+	$("#phone").val("");
+	$("#status").val("");
+	DriverApplyRefund.search();
+};
+$(function () {
+	var defaultColunms = DriverApplyRefund.initColumn();
+	var table = new BSTable(DriverApplyRefund.id, "/driverApplyRefund/list", defaultColunms);
+	table.setPaginationType("server");
+	DriverApplyRefund.table = table.init();
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/vipPayment/vipPayment.js b/cloud-server-management/src/main/webapp/static/modular/system/vipPayment/vipPayment.js
index d29f0e7..6adcb02 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/vipPayment/vipPayment.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/vipPayment/vipPayment.js
@@ -21,6 +21,7 @@
         {title:  '联系电话', field: 'appUserPhone', visible: true, align: 'center', valign: 'middle'},
         {title: '会员卡名称', field: 'vipName', visible:  true, align: 'center', valign: 'middle'},
         {title: '时长', field: 'vipTime', visible:  true, align: 'center', valign: 'middle'},
+        {title: '支付流水号', field: 'orderNumber', visible:  true, align: 'center', valign: 'middle'},
         {title: '金额', field: 'amountValue', visible:  true, align: 'center', valign: 'middle'},
         {title: '下单时间', field: 'insertTime', visible:  true, align: 'center', valign: 'middle'},
         {title: '是否退费', field: 'isRefund', visible: true, align: 'center', valign: 'middle',
diff --git a/cloud-server-other/src/main/resources/mapper/GameMapper.xml b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
index 34dc578..766a62c 100644
--- a/cloud-server-other/src/main/resources/mapper/GameMapper.xml
+++ b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
@@ -38,7 +38,7 @@
     </select>
     <select id="orderlist" resultType="map">
         SELECT *,st.`name` as storeName,si.`name` as siteName,CONCAT(DATE_FORMAT(bk.startTime, '%Y-%m-%d %H:%i:%s'), ' -
-        ', TIME_FORMAT(bk.endTime, '%H:%i:%s')) AS timeRange,bk.targetAudience
+        ', TIME_FORMAT(bk.endTime, '%H:%i:%s')) AS timeRange,bk.targetAudience,bk.payOrderNo
         FROM t_site_booking bk
         LEFT JOIN t_store st on bk.storeId = st.id
         LEFT JOIN t_site si on bk.siteId = si.id

--
Gitblit v1.7.1