From 6676f28a5a6ca65015a2b2c26e804fa998d625c8 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期二, 26 九月 2023 21:37:07 +0800 Subject: [PATCH] 后台代码 --- cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java | 2 cloud-server-competition/src/main/java/com/dsh/competition/service/IPaymentCompetitionService.java | 4 cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java | 7 cloud-server-management/src/main/webapp/static/modular/system/finance/RegistrationOrder.js | 151 ++ cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/TStudent.java | 109 ++ cloud-server-management/src/main/java/com/dsh/course/util/UUIDUtil.java | 101 + cloud-server-other/src/main/java/com/dsh/other/model/SiteBookingQuery.java | 20 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeQuery.java | 24 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderQuery.java | 39 cloud-server-account/src/main/java/com/dsh/account/model/IncomeQuery.java | 24 cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionQuery.java | 20 cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/PaymentCompetition.java | 85 + cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java | 2 cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java | 2 cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/CancelledClasses.html | 4 cloud-server-competition/src/main/java/com/dsh/competition/model/TCompetition.java | 238 ++++ cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderVO.java | 60 + cloud-server-management/src/main/webapp/static/modular/system/finance/cancelledClasses.js | 12 cloud-server-account/src/main/java/com/dsh/account/model/Student.java | 73 + cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeVO.java | 36 cloud-server-account/src/main/resources/mapper/VipPaymentMapper.tld | 1 cloud-server-course/src/main/java/com/dsh/course/model/AppUserByNameAndPhoneDTO.java | 12 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 12 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterDataVO.java | 21 cloud-server-account/src/main/java/com/dsh/account/service/IVipPaymentService.java | 4 cloud-server-account/src/main/resources/mapper/RechargeRecordsMapper.xml | 30 cloud-server-other/src/main/java/com/dsh/other/mapper/SiteBookingMapper.java | 5 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java | 19 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/VipPaymentClient.java | 23 cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java | 61 + cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/TCompetition.java | 238 ++++ cloud-server-account/src/main/java/com/dsh/account/model/AppUserByNameAndPhoneDTO.java | 12 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/AppUserByNameAndPhoneDTO.java | 12 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteBookingServiceImpl.java | 18 cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml | 49 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/VipPayment.java | 78 + cloud-server-account/src/main/java/com/dsh/account/entity/VipPayment.java | 2 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java | 7 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 85 + cloud-server-account/src/main/java/com/dsh/account/controller/FinanceController.java | 19 cloud-server-account/src/main/java/com/dsh/account/mapper/RechargeRecordsMapper.java | 5 cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderQuery.java | 40 cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java | 9 cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java | 9 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java | 505 +++++++++ cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java | 5 cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/Income.html | 61 + cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java | 42 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js | 16 cloud-server-other/src/main/java/com/dsh/other/service/ISiteBookingService.java | 2 cloud-server-competition/src/main/java/com/dsh/competition/mapper/PaymentCompetitionMapper.java | 6 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java | 10 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java | 3 cloud-server-account/src/main/java/com/dsh/account/mapper/VipPaymentMapper.java | 9 cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java | 8 cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java | 8 cloud-server-competition/src/main/java/com/dsh/competition/entity/PaymentCompetition.java | 2 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java | 5 cloud-server-account/src/main/java/com/dsh/account/model/query/RechargeRecordsQuery.java | 6 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js | 1 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBooking.java | 179 +++ cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java | 3 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java | 6 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsQuery.java | 4 cloud-server-competition/src/main/resources/mapper/PaymentCompetitionMapper.xml | 17 cloud-server-management/src/main/webapp/static/modular/system/finance/income.js | 150 ++ cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java | 5 cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java | 3 cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionQuery.java | 20 cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java | 10 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBookingQuery.java | 20 cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml | 11 cloud-server-other/src/main/resources/mapper/SiteBookingMapper.xml | 18 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 5 cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java | 4 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java | 10 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java | 2 cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java | 8 cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java | 12 cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/RegistrationOrder.html | 106 ++ cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 1 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 13 82 files changed, 3,003 insertions(+), 77 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 1ceb07a..b983c07 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 @@ -53,6 +53,14 @@ /** + * 根据用户姓名和电话模糊查询 + */ + @ResponseBody + @PostMapping("/base/appUser/queryAPPUserByNameAndPhone") + public List<TAppUser> queryAPPUserByNameAndPhone(@RequestBody AppUserByNameAndPhoneDTO dto){ + return appUserService.queryAPPUserByNameAndPhone(dto); + } + /** * 根据用户id获取用户信息 * @param appUserId * @return diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java index ee2a874..da469f2 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java @@ -27,7 +27,7 @@ */ @PostMapping("/coach/queryCoachListByName") @ResponseBody - public List<Coach> queryCoachListByName(String name){ + public List<Coach> queryCoachListByName(@RequestBody String name){ return service.list(new QueryWrapper<Coach>().like("name",name)); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/FinanceController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/FinanceController.java index 896c7ce..a3e5662 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/FinanceController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/FinanceController.java @@ -3,16 +3,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.account.entity.CoachType; +import com.dsh.account.entity.RechargeRecords; +import com.dsh.account.entity.VipPayment; +import com.dsh.account.model.IncomeQuery; import com.dsh.account.model.query.RechargeRecordsQuery; import com.dsh.account.model.query.coachQuery.CoachQuery; import com.dsh.account.model.vo.CoachSerchVO; import com.dsh.account.model.vo.RechargeRecordsVO; import com.dsh.account.service.CoachService; import com.dsh.account.service.CoachTypeService; +import com.dsh.account.service.IVipPaymentService; import com.dsh.account.service.RechargeRecordsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; /** @@ -23,6 +29,8 @@ public class FinanceController { @Autowired private RechargeRecordsService rechargeRecordsService; + @Autowired + private IVipPaymentService vipPaymentService; /** @@ -31,7 +39,14 @@ @ResponseBody @RequestMapping("/finance/rechargeList") public List<RechargeRecordsVO> rechargeList(@RequestBody RechargeRecordsQuery query){ - List<RechargeRecordsVO> list = rechargeRecordsService.rechargeList(query); - return list; + return rechargeRecordsService.rechargeList(query); + } + /** + * 加入会员列表数据 + */ + @ResponseBody + @RequestMapping("/finance/vipPaymentList") + public List<VipPayment> registrationList(@RequestBody IncomeQuery query){ + return rechargeRecordsService.listAll(query); } } diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java index 8be82ce..2d6993a 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java @@ -154,6 +154,15 @@ public List<TStudent> queryStudentListByName(@RequestBody String name){ return studentService.list(new QueryWrapper<TStudent>().eq("state", 1).like("name", name)); } + /** + * 根据名称模糊搜索学员 + * @param name + * @return + */ + @PostMapping("/student/queryTStudentListByName") + public List<TStudent> queryTStudentListByName(@RequestBody String name){ + return studentService.list(new QueryWrapper<TStudent>().eq("state", 1).like("name", name)); + } /** * web端查找学员 diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java index de8d3b0..34f5430 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java +++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java @@ -23,7 +23,7 @@ @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_app_user") -public class TAppUser{ +public class TAppUser { private static final long serialVersionUID = 1L; diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/VipPayment.java b/cloud-server-account/src/main/java/com/dsh/account/entity/VipPayment.java index c6da1e9..c21a751 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/entity/VipPayment.java +++ b/cloud-server-account/src/main/java/com/dsh/account/entity/VipPayment.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.dsh.account.util.UUIDUtil; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.text.SimpleDateFormat; @@ -66,6 +67,7 @@ * 添加时间 */ @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/RechargeRecordsMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/RechargeRecordsMapper.java index 019c6b1..42f2e2d 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/mapper/RechargeRecordsMapper.java +++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/RechargeRecordsMapper.java @@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.account.entity.RechargeRecords; +import com.dsh.account.entity.VipPayment; +import com.dsh.account.model.IncomeQuery; import com.dsh.account.model.query.RechargeRecordsQuery; import com.dsh.account.model.vo.RechargeRecordsVO; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -19,4 +22,6 @@ public interface RechargeRecordsMapper extends BaseMapper<RechargeRecords> { List<RechargeRecordsVO> rechargeList(@Param("query") RechargeRecordsQuery query,@Param("sTime")String sTime,@Param("eTime")String eTime); + List<VipPayment> listAll(@Param("query") IncomeQuery query, @Param("sTime")String sTime, @Param("eTime")String eTime, @Param("amount") BigDecimal amount); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java index 9457534..5d3e8ef 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java +++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.account.dto.SelectDto; import com.dsh.account.entity.TAppUser; +import com.dsh.account.model.AppUserByNameAndPhoneDTO; import com.dsh.account.model.query.appUserQuery.QueryAppUser; import com.dsh.account.model.vo.QueryAppUserVO; import org.apache.ibatis.annotations.Mapper; @@ -34,4 +35,6 @@ List<SelectDto> getSelects(@Param("studentIds") List<Integer> studentIds); int changeState(@Param("ids") List<Integer> ids,@Param("state") Integer state); + + List<TAppUser> queryAPPUserByNameAndPhone(@Param("query") AppUserByNameAndPhoneDTO dto); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/VipPaymentMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/VipPaymentMapper.java index 7cdfae5..84302f8 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/mapper/VipPaymentMapper.java +++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/VipPaymentMapper.java @@ -2,10 +2,19 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.account.entity.VipPayment; +import com.dsh.account.model.IncomeQuery; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; /** * @author zhibing.pu * @date 2023/6/24 10:02 */ + public interface VipPaymentMapper extends BaseMapper<VipPayment> { + + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/AppUserByNameAndPhoneDTO.java b/cloud-server-account/src/main/java/com/dsh/account/model/AppUserByNameAndPhoneDTO.java new file mode 100644 index 0000000..b2c9bff --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/AppUserByNameAndPhoneDTO.java @@ -0,0 +1,12 @@ +package com.dsh.account.model; + +import lombok.Data; + +/** + * 通过用户姓名和电话进行模糊查询DTO + */ +@Data +public class AppUserByNameAndPhoneDTO { + private String userName; + private String phone; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/IncomeQuery.java b/cloud-server-account/src/main/java/com/dsh/account/model/IncomeQuery.java new file mode 100644 index 0000000..0806803 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/IncomeQuery.java @@ -0,0 +1,24 @@ +package com.dsh.account.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 收入管理Query + */ +@Data +public class IncomeQuery { + // 收入时间 + private String time; + // 收入类型 + private Integer incomeType; + // 用户姓名 + private String userName; + // 收入金额 + private BigDecimal amount; + // 用户ids + private List<Integer> userIds; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/Student.java b/cloud-server-account/src/main/java/com/dsh/account/model/Student.java new file mode 100644 index 0000000..4907004 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/Student.java @@ -0,0 +1,73 @@ +package com.dsh.account.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * @author zhibing.pu + * @date 2023/7/4 23:39 + */ +@Data +public class Student { + private Integer id; + /** + * 用户id + */ + private Integer appUserId; + /** + * 学员姓名 + */ + private String name; + /** + * 学员电话 + */ + private String phone; + /** + * 生日 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date birthday; + /** + * 性别(1=男,2=女) + */ + private Integer sex; + /** + * 身高 + */ + private Double height; + /** + * 体重 + */ + private Double weight; + /** + * bmi健康值 + */ + private Double bmi; + /** + * 身份证号 + */ + private String idCard; + /** + * 体侧表 + */ + private String lateralSurface; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date insertTime; + /** + * 头像 + */ + private String headImg; + /** + * 是否默认 1默认 2不是默认 + */ + private Integer isDefault; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/query/RechargeRecordsQuery.java b/cloud-server-account/src/main/java/com/dsh/account/model/query/RechargeRecordsQuery.java index d229357..466050c 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/query/RechargeRecordsQuery.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/query/RechargeRecordsQuery.java @@ -2,6 +2,9 @@ import lombok.Data; +import java.math.BigDecimal; +import java.util.List; + /** * 充值记录列表查询Query */ @@ -16,5 +19,6 @@ * 1 = 会员 0 =非会员 */ private Integer type; - + private List<Integer> userIds; + private BigDecimal amount; } diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java index 6753749..4c6ee5e 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/RechargeRecordsVO.java @@ -34,5 +34,9 @@ * 1 = 会员 2 =非会员 */ private Integer type; + private Integer appUserId; + private Integer state; + @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/service/IVipPaymentService.java b/cloud-server-account/src/main/java/com/dsh/account/service/IVipPaymentService.java index 4355c9d..3058a52 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/IVipPaymentService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/IVipPaymentService.java @@ -2,7 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.account.entity.VipPayment; +import com.dsh.account.model.IncomeQuery; import com.dsh.account.util.ResultUtil; + +import java.util.List; /** @@ -26,4 +29,5 @@ * @throws Exception */ ResultUtil addVipPaymentCallback(String code, String orderNumber) throws Exception; + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java b/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java index 2a5d9d0..9b470c6 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java @@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.account.entity.RechargeRecords; +import com.dsh.account.entity.VipPayment; +import com.dsh.account.model.IncomeQuery; import com.dsh.account.model.query.RechargeRecordsQuery; import com.dsh.account.model.vo.RechargeRecordsVO; import com.dsh.account.model.vo.userBenefitDetail.RechargeDetailsVo; @@ -28,4 +30,5 @@ ResultUtil addRechargeCallbackPay(String code, String orderNumber); List<RechargeRecordsVO> rechargeList(RechargeRecordsQuery query); + List<VipPayment> listAll(IncomeQuery query); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java index 05e650a..2975b15 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java @@ -147,4 +147,5 @@ Object changeState(AdvertisementChangeStateDTO dto); + List<TAppUser> queryAPPUserByNameAndPhone(AppUserByNameAndPhoneDTO dto); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java index 7d77e6b..242d614 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.RechargeRecords; import com.dsh.account.entity.TAppUser; +import com.dsh.account.entity.VipPayment; import com.dsh.account.enums.RechargeRecordEnum; import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; import com.dsh.account.feignclient.competition.model.PaymentCompetition; @@ -15,6 +16,7 @@ import com.dsh.account.feignclient.other.model.SiteBooking; import com.dsh.account.mapper.RechargeRecordsMapper; import com.dsh.account.mapper.TAppUserMapper; +import com.dsh.account.model.IncomeQuery; import com.dsh.account.model.query.RechargeRecordsQuery; import com.dsh.account.model.vo.RechargeRecordsVO; import com.dsh.account.model.vo.userBenefitDetail.RechargeDetailsVo; @@ -366,6 +368,16 @@ } + @Override + public List<VipPayment> listAll(IncomeQuery query) { + String STime = null; + String ETime = null; + if (StringUtils.hasLength(query.getTime())) { + STime = query.getTime().split(" - ")[0] + " 00:00:00"; + ETime = query.getTime().split(" - ")[1] + " 23:59:59"; + } + return rechargeRecordsMapper.listAll(query,STime,ETime,query.getAmount()); + } public static <T> List<T> pageList(List<T> list, int pageNum, int pageSize) { //计算总页数 int page = list.size() % pageSize == 0 ? list.size() / pageSize : list.size() / pageSize + 1; 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 9dcdaca..d9b18ef 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 @@ -174,6 +174,11 @@ } @Override + public List<TAppUser> queryAPPUserByNameAndPhone(AppUserByNameAndPhoneDTO dto) { + return appUserMapper.queryAPPUserByNameAndPhone(dto); + } + + @Override public ClassInfoVo queryUserOfStus(Integer id) { TAppUser tAppUser = this.baseMapper.selectById(id); ClassInfoVo classInfoVo = new ClassInfoVo(); diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java index 932f0df..783baee 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java @@ -5,15 +5,19 @@ import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.VipPayment; import com.dsh.account.mapper.VipPaymentMapper; +import com.dsh.account.model.IncomeQuery; import com.dsh.account.service.IVipPaymentService; import com.dsh.account.service.TAppUserService; import com.dsh.account.util.PayMoneyUtil; import com.dsh.account.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -28,6 +32,8 @@ @Autowired private PayMoneyUtil payMoneyUtil; + @Autowired + private VipPaymentMapper vipPaymentMapper; @@ -257,4 +263,6 @@ appUserService.updateById(appUser); return ResultUtil.success(); } + + } diff --git a/cloud-server-account/src/main/resources/mapper/RechargeRecordsMapper.xml b/cloud-server-account/src/main/resources/mapper/RechargeRecordsMapper.xml index d0099e1..6317187 100644 --- a/cloud-server-account/src/main/resources/mapper/RechargeRecordsMapper.xml +++ b/cloud-server-account/src/main/resources/mapper/RechargeRecordsMapper.xml @@ -4,19 +4,43 @@ <select id="rechargeList" resultType="com.dsh.account.model.vo.RechargeRecordsVO"> - select t1.*,t2.name,t2.phone from t_recharge_records t1 - left join t_app_user t2 on t1.appUserId = t2.id + select t1.* from t_recharge_records t1 <where> + <if test="query.amount!=null and query.amount!= ''"> + and t1.amount <= #{query.amount} + </if> <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="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''"> and t1.insertTime between #{sTime} and #{eTime} </if> + <if test="query.userIds != null and query.userIds.size()>0"> + AND t1.appUserId IN + <foreach collection="query.userIds" separator="," item="id" open="(" close=")"> + #{id} + </foreach> + </if> + </where> + </select> + <select id="listAll" resultType="com.dsh.account.entity.VipPayment"> + select t1.* from t_vip_payment t1 + <where> + <if test="amount!=null and amount!= ''"> + and t1.amount <= #{amount} + </if> + <if test="query.userIds != null and query.userIds.size()>0"> + AND t1.appUserId IN + <foreach collection="query.userIds" separator="," item="id" open="(" close=")"> + #{id} + </foreach> + </if> + <if test="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''"> + and t1.insertTime between #{sTime} and #{eTime} + </if> </where> </select> </mapper> diff --git a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml index 2168842..f713086 100644 --- a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml +++ b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml @@ -82,4 +82,15 @@ </foreach> </where> </select> + <select id="queryAPPUserByNameAndPhone" resultType="com.dsh.account.entity.TAppUser"> + select * from t_app_user t1 + <where> + <if test="query.userName!=null and query.userName!= ''"> + AND t1.name LIKE concat('%',#{query.userName},'%') + </if> + <if test="query.phone!=null and query.phone!= ''"> + AND t1.phone LIKE concat('%',#{query.phone},'%') + </if> + </where> + </select> </mapper> diff --git a/cloud-server-account/src/main/resources/mapper/VipPaymentMapper.tld b/cloud-server-account/src/main/resources/mapper/VipPaymentMapper.tld index 0fb4b33..1f48171 100644 --- a/cloud-server-account/src/main/resources/mapper/VipPaymentMapper.tld +++ b/cloud-server-account/src/main/resources/mapper/VipPaymentMapper.tld @@ -17,4 +17,5 @@ <result column="isDefault" property="isDefault" /> </resultMap> + </mapper> 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 6221f18..57f39c4 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 @@ -11,9 +11,7 @@ import com.dsh.competition.feignclient.account.AppUserClient; import com.dsh.competition.feignclient.account.model.AppUser; import com.dsh.competition.feignclient.model.*; -import com.dsh.competition.model.CompetitionInfo; -import com.dsh.competition.model.CompetitionListVo; -import com.dsh.competition.model.PaymentCompetitionVo; +import com.dsh.competition.model.*; import com.dsh.competition.service.CompetitionService; import com.dsh.competition.service.IParticipantService; import com.dsh.competition.service.IPaymentCompetitionService; @@ -74,7 +72,14 @@ @Autowired private AppUserClient appUserClient; - + /** + * 获取赛事报名记录 + */ + @ResponseBody + @RequestMapping("/base/competition/listAllPayment") + public List<PaymentCompetition> listAllPayment(@RequestBody CompetitionQuery query){ + return paymentCompetitionService.listAll(query); + } @ResponseBody @PostMapping("/base/competition/getPayedCompetitions") public BillingRequestVo getAllCompetitionPayRecord(@RequestBody BillingDataRequestVo requestVo){ diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/entity/PaymentCompetition.java b/cloud-server-competition/src/main/java/com/dsh/competition/entity/PaymentCompetition.java index a8f5187..694e2b7 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/entity/PaymentCompetition.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/entity/PaymentCompetition.java @@ -4,6 +4,7 @@ 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 java.util.Date; @@ -79,5 +80,6 @@ * 添加时间 */ @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date insertTime; } diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/PaymentCompetitionMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/PaymentCompetitionMapper.java index bbed075..bceea9f 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/PaymentCompetitionMapper.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/PaymentCompetitionMapper.java @@ -1,11 +1,15 @@ package com.dsh.competition.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.competition.entity.Competition; import com.dsh.competition.entity.PaymentCompetition; import com.dsh.competition.feignclient.model.BillingRequest; import com.dsh.competition.model.CompetitionListVo; +import com.dsh.competition.model.CompetitionQuery; +import com.dsh.competition.model.TCompetition; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -34,4 +38,6 @@ @Param("monthStart")String monthStart, @Param("monthEnd")String monthEnd); + List<PaymentCompetition> listAll(@Param("query")CompetitionQuery query, @Param("sTime")String sTime, @Param("eTime")String eTime, @Param("amount") BigDecimal amount); + } diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionQuery.java b/cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionQuery.java new file mode 100644 index 0000000..8b15910 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionQuery.java @@ -0,0 +1,20 @@ +package com.dsh.competition.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 收入管理Query + */ +@Data +public class CompetitionQuery { + // 收入时间 + private String time; + // 收入金额 + private BigDecimal amount; + // 用户ids + private List<Integer> userIds; + +} diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/model/TCompetition.java b/cloud-server-competition/src/main/java/com/dsh/competition/model/TCompetition.java new file mode 100644 index 0000000..ecb828d --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/model/TCompetition.java @@ -0,0 +1,238 @@ +package com.dsh.competition.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_competition") +public class TCompetition extends Model<TCompetition> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 省 + */ + @TableField("province") + private String province; + /** + * 省编号 + */ + @TableField("provinceCode") + private String provinceCode; + /** + * 市 + */ + @TableField("city") + private String city; + /** + * 市编号 + */ + @TableField("cityCode") + private String cityCode; + /** + * 门店id + */ + @TableField("storeId") + private String storeId; + /** + * 赛事名称 + */ + @TableField("name") + private String name; + /** + * 开始时间 + */ + @TableField("startTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + /** + * 结束时间 + */ + @TableField("endTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + /** + * 报名结束时间 + */ + @TableField("registerEndTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date registerEndTime; + /** + * 报名条件(1=全部用户,2=仅限年度会员参与,3=仅限学员参与) + */ + @TableField("registerCondition") + private Integer registerCondition; + /** + * 报名开始年龄 + */ + @TableField("startAge") + private Integer startAge; + /** + * 报名结束年龄 + */ + @TableField("endAge") + private Integer endAge; + /** + * 现金支付价格 + */ + @TableField("cashPrice") + private Double cashPrice; + /** + * 玩湃币支付价格 + */ + @TableField("playPaiCoin") + private Integer playPaiCoin; + /** + * 课时支付价格 + */ + @TableField("classPrice") + private Integer classPrice; + /** + * 参加地址 + */ + @TableField("address") + private String address; + /** + * 经度 + */ + @TableField("longitude") + private String longitude; + /** + * 纬度 + */ + @TableField("latitude") + private String latitude; + /** + * 报名人数 + */ + @TableField("applicantsNumber") + private Integer applicantsNumber; + /** + * 基础人数 + */ + @TableField("baseNumber") + private Integer baseNumber; + /** + * 是否需要实名(0=否,1=是) + */ + @TableField("realName") + private Integer realName; + /** + * 赛事封面图 + */ + @TableField("coverDrawing") + private String coverDrawing; + /** + * 赛事简介 + */ + @TableField("introduction") + private String introduction; + /** + * 赛事图片 + */ + @TableField("imgs") + private String imgs; + /** + * 报名须知 + */ + @TableField("registrationNotes") + private String registrationNotes; + /** + * 参赛省 + */ + @TableField("entryProvince") + private String entryProvince; + /** + * 参赛省编号 + */ + @TableField("entryProvinceCode") + private String entryProvinceCode; + /** + * 参赛市 + */ + @TableField("entryCity") + private String entryCity; + /** + * 参赛市编号 + */ + @TableField("entryCityCode") + private String entryCityCode; + /** + * 参赛地址 + */ + @TableField("entryAddress") + private String entryAddress; + /** + * 参赛经度 + */ + @TableField("entryLon") + private String entryLon; + /** + * 参赛纬度 + */ + @TableField("entryLat") + private String entryLat; + /** + * 审核状态(1=待审核,2=已通过,3=已拒绝) + */ + @TableField("auditStatus") + private Integer auditStatus; + /** + * 审核人id + */ + @TableField("auditUserId") + private Integer auditUserId; + /** + * 审核备注 + */ + @TableField("auditRemark") + private String auditRemark; + /** + * 状态(1=未开始,2=已开始,3=已结束,4=已取消) + */ + @TableField("status") + private Integer status; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("state") + private Integer state; + /** + * 添加时间 + */ + @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/IPaymentCompetitionService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/IPaymentCompetitionService.java index b10b08c..8d19245 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/service/IPaymentCompetitionService.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/IPaymentCompetitionService.java @@ -1,10 +1,13 @@ package com.dsh.competition.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.competition.entity.Competition; import com.dsh.competition.entity.PaymentCompetition; import com.dsh.competition.feignclient.model.BillingRequest; import com.dsh.competition.model.CompetitionInfo; import com.dsh.competition.model.CompetitionListVo; +import com.dsh.competition.model.CompetitionQuery; +import com.dsh.competition.model.TCompetition; import com.dsh.competition.util.ResultUtil; import java.util.List; @@ -49,4 +52,5 @@ List<BillingRequest> queryCancelDatas(Integer appUserId, String monthStart, String monthEnd); + List<PaymentCompetition> listAll(CompetitionQuery query); } diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java index 3f62769..180ce8c 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java @@ -16,9 +16,7 @@ import com.dsh.competition.feignclient.other.StoreClient; import com.dsh.competition.feignclient.other.model.Store; import com.dsh.competition.mapper.PaymentCompetitionMapper; -import com.dsh.competition.model.CompetitionInfo; -import com.dsh.competition.model.CompetitionListVo; -import com.dsh.competition.model.ParticipantVo; +import com.dsh.competition.model.*; import com.dsh.competition.service.CompetitionService; import com.dsh.competition.service.IParticipantService; import com.dsh.competition.service.IPaymentCompetitionService; @@ -26,6 +24,7 @@ import com.dsh.competition.util.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -67,6 +66,8 @@ @Resource private StudentClient studentClient; + @Autowired + private PaymentCompetitionMapper paymentCompetitionMapper; @@ -243,4 +244,16 @@ public List<BillingRequest> queryCancelDatas(Integer appUserId, String monthStart, String monthEnd) { return this.baseMapper.queryCancelDatas(appUserId,monthStart,monthEnd); } + + @Override + public List<PaymentCompetition> listAll(CompetitionQuery query) { + String STime = null; + String ETime = null; + if (StringUtils.hasLength(query.getTime())) { + STime = query.getTime().split(" - ")[0] + " 00:00:00"; + ETime = query.getTime().split(" - ")[1] + " 23:59:59"; + } + + return paymentCompetitionMapper.listAll(query,STime,ETime,query.getAmount()); + } } diff --git a/cloud-server-competition/src/main/resources/mapper/PaymentCompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/PaymentCompetitionMapper.xml index 5084701..a865758 100644 --- a/cloud-server-competition/src/main/resources/mapper/PaymentCompetitionMapper.xml +++ b/cloud-server-competition/src/main/resources/mapper/PaymentCompetitionMapper.xml @@ -57,4 +57,21 @@ and appUserId = #{appUserId} </if> </select> + <select id="listAll" resultType="com.dsh.competition.entity.PaymentCompetition"> + select * from t_payment_competition t1 + <where> + <if test="query.amount!=null and query.amount!= ''"> + and t1.amount <= #{query.amount} + </if> + <if test="query.userIds != null and query.userIds.size()>0"> + AND t1.appUserId IN + <foreach collection="query.userIds" separator="," item="id" open="(" close=")"> + #{id} + </foreach> + </if> + <if test="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''"> + and t1.insertTime between #{sTime} and #{eTime} + </if> + </where> + </select> </mapper> \ No newline at end of file diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java index ce1da41..4da42ab 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java @@ -54,30 +54,34 @@ @ResponseBody @PostMapping("/cancelledClasses/listAll") public List<CancelClassesVO> listAll(@RequestBody CancelClassesQuery query){ - List<CancelClassesVO> res = new ArrayList<>(); - if (!query.getStudentName().equals("")){ - List<Integer> s = new ArrayList<>(); - List<Student> students = studentClient.queryStudentListByName(query.getStudentName()); - if (students.size()==0){ - return new ArrayList<>(); + if (query.getStudentName()!=null){ + if (!query.getStudentName().equals("")){ + List<Integer> s = new ArrayList<>(); + List<Student> students = studentClient.queryStudentListByName(query.getStudentName()); + if (students.size()==0){ + return new ArrayList<>(); + } + for (Student coach : students) { + s.add(coach.getId()); + } + query.setStudentIds(s); } - for (Student coach : students) { - s.add(coach.getId()); - } - query.setStudentIds(s); } - if (!query.getCoachName().equals("")){ - List<Integer> c = new ArrayList<>(); - List<Coach> coaches = coachClient.queryCoachListByName(query.getCoachName()); - if (coaches.size()==0){ - return new ArrayList<>(); + if (query.getCoachName()!=null){ + if (!query.getCoachName().equals("")){ + List<Integer> c = new ArrayList<>(); + List<Coach> coaches = coachClient.queryCoachListByName(query.getCoachName()); + if (coaches.size()==0){ + return new ArrayList<>(); + } + for (Coach coach : coaches) { + c.add(coach.getId()); + } + query.setCoachIds(c); } - for (Coach coach : coaches) { - c.add(coach.getId()); - } - query.setCoachIds(c); } + List<CancelClassesVO> result = cancelledClassesService.listAll(query); for (CancelClassesVO cancelClassesVO : result) { CoursePackageScheduling byId1 = coursePackageSchedulingService.getById(cancelClassesVO.getCoursePackageSchedulingId()); diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java index 309a8cf..d97e7c7 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java @@ -13,6 +13,7 @@ import com.dsh.course.feignclient.account.model.AppUser; import com.dsh.course.feignclient.account.model.Student; import com.dsh.course.feignclient.account.model.TCourseInfoRecord; +import com.dsh.course.feignclient.account.model.TStudent; import com.dsh.course.feignclient.activity.CouponClient; import com.dsh.course.feignclient.activity.model.Coupon; import com.dsh.course.feignclient.model.*; @@ -123,6 +124,8 @@ private CoursePackageSchedulingMapper coursePackageSchedulingMapper; @Autowired private ICoursePackageSchedulingService coursePackageSchedulingService; + @Autowired + private CoursePackageStudentService coursePackageStudentService; private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); /** @@ -134,6 +137,8 @@ packagePayment.setInsertTime(new Date()); packagePayment.setInsertTime(new Date()); Integer studentId = packagePayment.getStudentId(); + // 添加学员上课记录 + CoursePackageStudent coursePackageStudent = new CoursePackageStudent(); TCoursePackagePayment one = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", packagePayment) .orderByDesc("insertTime") .last("LIMIT 1")); @@ -144,7 +149,7 @@ // 没有过期 if (one.getUseTime().after(new Date())){ packagePayment.setTotalClassHours(packagePayment.getClassHours()+one.getTotalClassHours()); - packagePayment.setLaveClassHours(packagePayment.getClassHours()+one.getLaveClassHours()); + packagePayment.setLaveClassHours(one.getLaveClassHours()-packagePayment.getClassHours()); packagePayment.setAbsencesNumber(one.getAbsencesNumber()); } packagePayment.setTotalClassHours(packagePayment.getClassHours()); @@ -214,6 +219,8 @@ coursePackageScheduling.setEndDate(endDate.getTime()); coursePackageScheduling.setStatus(1); coursePackageSchedulingService.save(coursePackageScheduling); + coursePackageStudent.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>() .eq("coursePackageId", coursePackage.getId()) .eq("classDate", classDate.getTime()) @@ -232,7 +239,18 @@ } catch (ParseException e) { e.printStackTrace(); } - return packagePaymentService.save(packagePayment); + + coursePackageStudent.setStudentId(packagePayment.getStudentId()); + coursePackageStudent.setCoursePackageId(packagePayment.getCoursePackageId()); + + + coursePackageStudent.setSignInOrNot(0); + coursePackageStudent.setReservationStatus(1); + coursePackageStudent.setInsertTime(new Date()); + coursePackageStudent.setAppUserId(packagePayment.getAppUserId()); + packagePaymentService.save(packagePayment); + coursePackageStudent.setCoursePackagePaymentId(packagePayment.getId()); + return coursePackageStudentService.save(coursePackageStudent); } /** * 手动支付 @@ -271,19 +289,19 @@ List<AppUser> appUsers = appUserClient.queryAppUserListByName(query.getPayUser()); for (AppUser user : appUsers) { if (appUser.getName().equals(user.getName())){ - result.add(re); + if (query.getPayStudent()== null || query.getPayStudent().equals("")){ + }else{ + List<Student> students = studentClient.queryStudentListByName(query.getPayStudent()); + for (Student student1 : students) { + if (student.getName().equals(student1.getName())){ + result.add(re); + } + } + } } } } - if (query.getPayStudent()== null || query.getPayStudent().equals("")){ - }else{ - List<Student> students = studentClient.queryStudentListByName(query.getPayStudent()); - for (Student student1 : students) { - if (student.getName().equals(student1.getName())){ - result.add(re); - } - } - } + if (re.getPayType()!=null){ if (re.getPayType()==1){ re.setBuyTypeName("微信支付"); @@ -303,6 +321,7 @@ } // 如果支付用户类型为管理员 则购买方式则为1线下购买 + if (re.getPayUserType()!=null){ if (re.getPayUserType()== 2){ re.setBuyType(1); }else{ @@ -316,6 +335,7 @@ } } } + } if (query.getPayStudent()== null || query.getPayStudent().equals("")){ if (query.getPayUser()== null || query.getPayUser().equals("")){ return res; @@ -328,6 +348,47 @@ } /** + * 获取报名订单记录列表 + */ + @ResponseBody + @RequestMapping("/registerOrder/listAllRegister") + public List<RegisterOrderVO> listAllRegister(@RequestBody RegisterOrderQuery query){ + if (query.getStudentName()!=null){ + if (!query.getStudentName().equals("")){ + List<TStudent> students1 = studentClient.queryTStudentListByName(query.getStudentName()); + List<Integer> studentIds = students1.stream().map(TStudent::getId).collect(Collectors.toList()); + query.setStudentIds(studentIds); + if (students1.size()==0){ + return new ArrayList<>(); + } + } + } + + List<RegisterOrderVO> res = packagePaymentService.listAllRegister(query); + List<RegisterOrderVO> result = new ArrayList<>(); + for (RegisterOrderVO re : res) { + if(re.getSalesName()==null){ + re.setSalesName("无"); + } + if(re.getPayType()!=null){ + if (re.getPayType() == 3){ + re.setPayMoneyAndType(re.getPlayPaiCoin()+"玩湃币"); + }else{ + re.setPayMoneyAndType("¥"+re.getMoney()); + } + } + Store store = storeClient.queryStoreById(re.getStoreId()); + TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId()); + Student student = studentClient.queryStudentById(re.getStudentId()); + re.setPayStudent(student.getName()); + re.setPayUser(appUser.getName()); + re.setPhone(appUser.getPhone()); + re.setStoreName(store.getName()); + } + return res; + } + + /** * 获取 没有学员信息的图片配置 * @param stuId 学员id * @return 课包列表 diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java index 66c684a..ef54715 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java @@ -159,4 +159,9 @@ */ @TableField("payUserName") private String payUserName; + /** + * 销售人员(线下购课添加购课订单时使用) + */ + @TableField("salesName") + private String salesName; } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java index 60510a1..10ace86 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java @@ -3,6 +3,7 @@ import com.dsh.course.entity.dto.SelectDto; import com.dsh.course.feignclient.account.model.AppUser; import com.dsh.course.feignclient.account.model.TCourseInfoRecord; +import com.dsh.course.model.AppUserByNameAndPhoneDTO; import com.dsh.course.model.TAppUser; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -18,6 +19,12 @@ @FeignClient("mb-cloud-account") public interface AppUserClient { + + /** + * 根据用户姓名和电话模糊查询 + */ + @PostMapping("/base/appUser/queryAPPUserByNameAndPhone") + List<TAppUser> queryAPPUserByNameAndPhone(@RequestBody AppUserByNameAndPhoneDTO dto); /** * 根据用户id获取用户信息 * @param appUserId diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java index a6b7eed..3da4145 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java @@ -21,7 +21,7 @@ * @return */ @PostMapping("/coach/queryCoachListByName") - List<Coach> queryCoachListByName(String name); + List<Coach> queryCoachListByName(@RequestBody String name); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java index 830c804..dc0c603 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java @@ -1,9 +1,12 @@ package com.dsh.course.feignclient.account; import com.dsh.course.feignclient.account.model.Student; +import com.dsh.course.feignclient.account.model.TStudent; import io.swagger.models.auth.In; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -40,6 +43,13 @@ */ @PostMapping("/student/queryStudentListByName") List<Student> queryStudentListByName(String name); + /** + * 根据名称模糊搜索学员 + * @param name + * @return + */ + @PostMapping("/student/queryTStudentListByName") + List<TStudent> queryTStudentListByName(@RequestBody String name); diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/TStudent.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/TStudent.java new file mode 100644 index 0000000..c82e008 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/TStudent.java @@ -0,0 +1,109 @@ +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_student") +public class TStudent { + + 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("phone") + private String phone; + /** + * 生日 + */ + @TableField("birthday") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date birthday; + /** + * 性别(1=男,2=女) + */ + @TableField("sex") + private Integer sex; + /** + * 身高 + */ + @TableField("height") + private Double height; + /** + * 体重 + */ + @TableField("weight") + private Double weight; + /** + * bmi健康值 + */ + @TableField("bmi") + private Double bmi; + /** + * 身份证号 + */ + @TableField("idCard") + private String idCard; + /** + * 体侧表 + */ + @TableField("lateralSurface") + private String lateralSurface; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("state") + private Integer state; + /** + * 添加时间 + */ + @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date insertTime; + /** + * 头像 + */ + @TableField("headImg") + private String headImg; + /** + * 是否默认 1默认 2不是默认 + */ + @TableField("isDefault") + private Integer isDefault; + + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java index 322d5ed..652e20f 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java @@ -2,11 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.course.entity.CoursePackagePaymentConfig; -import com.dsh.course.model.CoursePackagePayDTO; -import com.dsh.course.model.CoursePackagePaymentQuery; -import com.dsh.course.model.CoursePackagePaymentVO; +import com.dsh.course.model.*; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -17,4 +16,7 @@ List<CoursePackagePaymentVO> listAll(@Param("query") CoursePackagePaymentQuery query); int changeState(@Param("ids") List<Long> ids,@Param("payUserName") String payUserName,@Param("payUserId") Integer payUserId); + + List<RegisterOrderVO> listAllRegister(@Param("query")RegisterOrderQuery query, @Param("sTime")String sTime, @Param("eTime")String eTime, @Param("amount")BigDecimal amount); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/AppUserByNameAndPhoneDTO.java b/cloud-server-course/src/main/java/com/dsh/course/model/AppUserByNameAndPhoneDTO.java new file mode 100644 index 0000000..ad0be1a --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/AppUserByNameAndPhoneDTO.java @@ -0,0 +1,12 @@ +package com.dsh.course.model; + +import lombok.Data; + +/** + * 通过用户姓名和电话进行模糊查询DTO + */ +@Data +public class AppUserByNameAndPhoneDTO { + private String userName; + private String phone; +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderQuery.java b/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderQuery.java new file mode 100644 index 0000000..e264e88 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderQuery.java @@ -0,0 +1,40 @@ +package com.dsh.course.model; + +import lombok.Data; +import org.omg.CORBA.PRIVATE_MEMBER; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 报名订单列表查询Query + */ +@Data +public class RegisterOrderQuery { + // 省 + private String province; + // 市 + private String city; + // 门店名称 + private Integer storeId; + // 报名时间 + private String registerTime; + // 购买用户 + private String userName; + // 购买用户ids + private List<Integer> userIds; + // 联系方式 + private String phone; + // 报名学员 + private String studentName; + // 报名学员ids + private List<Integer> studentIds; + // 课包名称 + private String coursePackageName; + // 销售人员 + private String salesName; + // 订单来源 + private Integer orderSource; + // 订单金额 + private BigDecimal amount; +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java b/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java new file mode 100644 index 0000000..fc724dc --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java @@ -0,0 +1,61 @@ +package com.dsh.course.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 报名订单列表VO + */ +@Data +public class RegisterOrderVO { + /** + * + {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '所在省市', field: 'provinceAndCity', visible: role==1?true:false, align: 'center', valign: 'middle'}, + {title: '所属门店', field: 'storeName', visible: role!=3?true:false, align: 'center', valign: 'middle'}, + {title: '购买用户', field: 'payUser', visible: true, align: 'center', valign: 'middle'}, + {title: '联系方式', field: 'phone', visible: true, align: 'center', valign: 'middle'}, + {title: '报名学员', field: 'payStudent', visible: true, align: 'center', valign: 'middle'}, + {title: '报名时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'}, + {title: '支付价格', field: 'payMoneyAndType', visible: true, align: 'center', valign: 'middle'}, + {title: '课包名称', field: 'coursePackage', visible: true, align: 'center', valign: 'middle'}, + {title: '订单来源', field: 'payUserType', visible: true, align: 'center', valign: 'middle', + formatter:function (data) {return{1:"线上",2:"线下"}[data]}}, + {title: '销售人员', field: 'salesName', visible: true, align: 'center', valign: 'middle'} + */ + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long id; + private String provinceAndCity; + // 门店id + private Integer storeId; + private String storeName; + + private String coursePackageName; + private Integer coursePackageId; + // 用户id + private Integer appUserId; + private String payUser; + private String phone; + // 学员id + private Integer studentId; + private String payStudent; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date insertTime; + // 支付金额 + private BigDecimal money; + // 玩湃币价格/积分 + private Integer playPaiCoin; + // 该字段用于展示在前端 + private String payMoneyAndType; + // 订单来源 2 为线下购买 1为线上 + private Integer payUserType; + // 销售人员 + private String salesName; + // 支付方式 + private Integer payType; + private Integer payStatus; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java index f017ec9..d5ef124 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java @@ -127,4 +127,7 @@ List<CoursePackagePaymentVO> listAll(CoursePackagePaymentQuery query); int changeState(CoursePackagePayDTO dto); + + List<RegisterOrderVO> listAllRegister(RegisterOrderQuery query); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java index 4ab628d..1e78c40 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java @@ -39,6 +39,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @@ -131,6 +132,17 @@ return cpConfigMapper.changeState(list,dto.getPayUserName(),dto.getUserId()); } + @Override + public List<RegisterOrderVO> listAllRegister(RegisterOrderQuery query) { + String STime = null; + String ETime = null; + if (StringUtils.hasLength(query.getRegisterTime())) { + STime = query.getRegisterTime().split(" - ")[0] + " 00:00:00"; + ETime = query.getRegisterTime().split(" - ")[1] + " 23:59:59"; + } + return cpConfigMapper.listAllRegister(query,STime,ETime,query.getAmount()); + } + /** * 获取课包购买人数 * @param coursePackageId diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml index 42c3b49..9ea4874 100644 --- a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml @@ -53,5 +53,54 @@ </if> </where> </select> + <select id="listAllRegister" resultType="com.dsh.course.model.RegisterOrderVO"> + select t1.id,t1.studentId,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.giftClassHours,t1.appUserId,t1.cashPayment as money,t1.playPaiCoin, + t1.insertTime, + CONCAT(t2.province,t2.city) as provinceAndCity,t2.coursePackageTypeId,t2.storeId,t2.name as coursePackageName + from t_course_package_payment t1 + left join t_course_package t2 on t1.coursePackageId = t2.id + <where> + <if test="query.amount!=null and query.amount!= ''"> + and t1.cashPayment <= #{query.amount} + </if> + <if test="query.province!=null and query.province!= ''"> + and t2.provinceCode = #{query.province} + </if> + <if test="query.city!=null and query.city!= ''"> + and t2.cityCode = #{query.city} + </if> + <if test="query.storeId!=null and query.storeId!= ''"> + and t2.storeId = #{query.storeId} + </if> + <if test="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''"> + and t1.insertTime between #{sTime} and #{eTime} + </if> + + <if test="query.userIds != null and query.userIds.size()>0"> + AND t1.appUserId IN + <foreach collection="query.userIds" separator="," item="id" open="(" close=")"> + #{id} + </foreach> + </if> + + <if test="query.studentIds != null and query.studentIds.size()>0"> + AND t1.studentId IN + <foreach collection="query.studentIds" separator="," item="id" open="(" close=")"> + #{id} + </foreach> + </if> + <if test="query.coursePackageName!=null and query.coursePackageName!= ''"> + AND t2.name LIKE concat('%',#{query.coursePackageName},'%') + </if> + <if test="query.salesName!=null and query.salesName!= ''"> + AND t1.salesName LIKE concat('%',#{query.salesName},'%') + </if> + + <if test="query.orderSource!=null and query.orderSource!= ''"> + and t1.payUserType = #{query.orderSource} + </if> + and t1.payStatus = 2 + </where> + </select> </mapper> \ No newline at end of file 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 0784709..4605680 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 @@ -11,6 +11,7 @@ import com.dsh.course.feignClient.account.model.TAppUser; import com.dsh.course.feignClient.other.model.SiteChangeStateVO; import com.dsh.guns.modular.system.model.AdvertisementChangeStateDTO; +import com.dsh.guns.modular.system.model.AppUserByNameAndPhoneDTO; import com.dsh.guns.modular.system.model.TStudent; import com.dsh.guns.modular.system.model.dto.GiftSearchDto; import com.dsh.guns.modular.system.model.dto.SelectDto; @@ -25,6 +26,11 @@ /** + * 根据用户姓名和电话模糊查询 + */ + @PostMapping("/base/appUser/queryAPPUserByNameAndPhone") + List<TAppUser> queryAPPUserByNameAndPhone(@RequestBody AppUserByNameAndPhoneDTO dto); + /** * 根据用户id获取用户信息 * @param appUserId * @return diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/VipPaymentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/VipPaymentClient.java new file mode 100644 index 0000000..8876311 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/VipPaymentClient.java @@ -0,0 +1,23 @@ +package com.dsh.course.feignClient.account; + +import com.dsh.course.feignClient.account.model.VipPayment; +import com.dsh.guns.modular.system.model.IncomeQuery; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; + +/** + * @author zhibing.pu + * @date 2023/7/4 23:38 + */ +@FeignClient("mb-cloud-account") +public interface VipPaymentClient { + + /** + * 加入会员列表数据 + */ + @RequestMapping("/finance/vipPaymentList") + List<VipPayment> registrationList(@RequestBody IncomeQuery query); +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/VipPayment.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/VipPayment.java new file mode 100644 index 0000000..b67b395 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/VipPayment.java @@ -0,0 +1,78 @@ +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.dsh.course.util.UUIDUtil; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author zhibing.pu + * @date 2023/6/24 9:58 + */ +@Data +@TableName("t_vip_payment") +public class VipPayment { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 流水号 + */ + @TableField("code") + private String code; + /** + * 用户id + */ + @TableField("appUserId") + private Integer appUserId; + /** + * 支付金额 + */ + @TableField("amount") + private Double amount; + /** + * 支付方式(1=微信,2=支付宝) + */ + @TableField("payType") + private Integer payType; + /** + * 支付状态(1=待支付,2=已支付) + */ + @TableField("payStatus") + private Integer payStatus; + /** + * 支付时间 + */ + @TableField("payTime") + private Date payTime; + /** + * 第三方流水号 + */ + @TableField("orderNumber") + private String orderNumber; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("state") + private Integer state; + /** + * 添加时间 + */ + @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date insertTime; + + + public static String CODE(){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + return sdf.format(new Date()) + UUIDUtil.getNumberRandom(3); + } +} 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 c12dce0..70eee48 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 @@ -5,12 +5,19 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @FeignClient("mb-cloud-competition") public interface CompetitionClient { + /** + * 获取赛事报名记录 + */ + @RequestMapping("/base/competition/listAllPayment") + List<PaymentCompetition> listAllPayment(@RequestBody CompetitionQuery query); @PostMapping("/base/competition/queryById") Competition queryById(Integer id); diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionQuery.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionQuery.java new file mode 100644 index 0000000..2076d71 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionQuery.java @@ -0,0 +1,20 @@ +package com.dsh.course.feignClient.competition.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 收入管理Query + */ +@Data +public class CompetitionQuery { + // 收入时间 + private String time; + // 收入金额 + private BigDecimal amount; + // 用户ids + private List<Integer> userIds; + +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/PaymentCompetition.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/PaymentCompetition.java new file mode 100644 index 0000000..dae64a7 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/PaymentCompetition.java @@ -0,0 +1,85 @@ +package com.dsh.course.feignClient.competition.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 java.util.Date; + +/** + * @author zhibing.pu + * @date 2023/7/6 16:30 + */ +@Data +@TableName("t_payment_competition") +public class PaymentCompetition { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.NONE) + private Long id; + /** + * 业务流水号 + */ + @TableField("code") + private String code; + /** + * 赛事id + */ + @TableField("competitionId") + private Integer competitionId; + /** + * 用户id + */ + @TableField("appUserId") + private Integer appUserId; + /** + * 支付方式(1=微信,2=支付宝,3=玩湃币,4=课时) + */ + @TableField("payType") + private Integer payType; + /** + * 支付金额 + */ + @TableField("amount") + private Double amount; + /** + * 支付状态(1=待支付,2=已支付,3=已退款) + */ + @TableField("payStatus") + private Integer payStatus; + /** + * 支付时间 + */ + @TableField("payTime") + private Date payTime; + /** + * 第三方支付流水号 + */ + @TableField("payOrderNo") + private String payOrderNo; + /** + * 退款时间 + */ + @TableField("refundTime") + private Date refundTime; + /** + * 第三方退款流水 + */ + @TableField("refundOrderNo") + private String refundOrderNo; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("state") + private Integer state; + /** + * 添加时间 + */ + @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/course/feignClient/competition/model/TCompetition.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/TCompetition.java new file mode 100644 index 0000000..63139c3 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/TCompetition.java @@ -0,0 +1,238 @@ +package com.dsh.course.feignClient.competition.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_competition") +public class TCompetition extends Model<TCompetition> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 省 + */ + @TableField("province") + private String province; + /** + * 省编号 + */ + @TableField("provinceCode") + private String provinceCode; + /** + * 市 + */ + @TableField("city") + private String city; + /** + * 市编号 + */ + @TableField("cityCode") + private String cityCode; + /** + * 门店id + */ + @TableField("storeId") + private String storeId; + /** + * 赛事名称 + */ + @TableField("name") + private String name; + /** + * 开始时间 + */ + @TableField("startTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + /** + * 结束时间 + */ + @TableField("endTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + /** + * 报名结束时间 + */ + @TableField("registerEndTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date registerEndTime; + /** + * 报名条件(1=全部用户,2=仅限年度会员参与,3=仅限学员参与) + */ + @TableField("registerCondition") + private Integer registerCondition; + /** + * 报名开始年龄 + */ + @TableField("startAge") + private Integer startAge; + /** + * 报名结束年龄 + */ + @TableField("endAge") + private Integer endAge; + /** + * 现金支付价格 + */ + @TableField("cashPrice") + private Double cashPrice; + /** + * 玩湃币支付价格 + */ + @TableField("playPaiCoin") + private Integer playPaiCoin; + /** + * 课时支付价格 + */ + @TableField("classPrice") + private Integer classPrice; + /** + * 参加地址 + */ + @TableField("address") + private String address; + /** + * 经度 + */ + @TableField("longitude") + private String longitude; + /** + * 纬度 + */ + @TableField("latitude") + private String latitude; + /** + * 报名人数 + */ + @TableField("applicantsNumber") + private Integer applicantsNumber; + /** + * 基础人数 + */ + @TableField("baseNumber") + private Integer baseNumber; + /** + * 是否需要实名(0=否,1=是) + */ + @TableField("realName") + private Integer realName; + /** + * 赛事封面图 + */ + @TableField("coverDrawing") + private String coverDrawing; + /** + * 赛事简介 + */ + @TableField("introduction") + private String introduction; + /** + * 赛事图片 + */ + @TableField("imgs") + private String imgs; + /** + * 报名须知 + */ + @TableField("registrationNotes") + private String registrationNotes; + /** + * 参赛省 + */ + @TableField("entryProvince") + private String entryProvince; + /** + * 参赛省编号 + */ + @TableField("entryProvinceCode") + private String entryProvinceCode; + /** + * 参赛市 + */ + @TableField("entryCity") + private String entryCity; + /** + * 参赛市编号 + */ + @TableField("entryCityCode") + private String entryCityCode; + /** + * 参赛地址 + */ + @TableField("entryAddress") + private String entryAddress; + /** + * 参赛经度 + */ + @TableField("entryLon") + private String entryLon; + /** + * 参赛纬度 + */ + @TableField("entryLat") + private String entryLat; + /** + * 审核状态(1=待审核,2=已通过,3=已拒绝) + */ + @TableField("auditStatus") + private Integer auditStatus; + /** + * 审核人id + */ + @TableField("auditUserId") + private Integer auditUserId; + /** + * 审核备注 + */ + @TableField("auditRemark") + private String auditRemark; + /** + * 状态(1=未开始,2=已开始,3=已结束,4=已取消) + */ + @TableField("status") + private Integer status; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("state") + private Integer state; + /** + * 添加时间 + */ + @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java index ab4fff6..eb65fd2 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java @@ -4,9 +4,7 @@ import com.dsh.course.feignClient.course.model.QueryRegistrationRecord; import com.dsh.course.feignClient.course.model.QueryWalkInStudentList; import com.dsh.course.feignClient.course.model.TCoursePackagePayment; -import com.dsh.guns.modular.system.model.CoursePackagePayDTO; -import com.dsh.guns.modular.system.model.CoursePackagePaymentQuery; -import com.dsh.guns.modular.system.model.CoursePackagePaymentVO; +import com.dsh.guns.modular.system.model.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -23,7 +21,11 @@ @FeignClient("mb-cloud-course") public interface CoursePackagePaymentClient { - + /** + * 获取报名订单记录列表 + */ + @RequestMapping("/registerOrder/listAllRegister") + List<RegisterOrderVO> listAllRegister(@RequestBody RegisterOrderQuery query); /** * 添加购课记录-后台 * @return diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java index db55f88..c72d2d3 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java @@ -3,9 +3,7 @@ import com.dsh.course.feignClient.other.model.Site; import com.dsh.course.feignClient.other.model.SiteChangeStateVO; import com.dsh.course.feignClient.other.model.TSiteDTO; -import com.dsh.guns.modular.system.model.ExpireSiteSearchVO; -import com.dsh.guns.modular.system.model.SiteSearchVO; -import com.dsh.guns.modular.system.model.TSite; +import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.util.ResultUtil; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestBody; @@ -19,7 +17,11 @@ @FeignClient(value = "mb-cloud-other") public interface SiteClient { - + /** + * 获取场地预约记录 + */ + @RequestMapping("/base/site/listAll") + List<SiteBooking> listAll(@RequestBody SiteBookingQuery query); /** * 上/下架、删除常见问题 type=1为上架 2为下架 3为删除 */ diff --git a/cloud-server-management/src/main/java/com/dsh/course/util/UUIDUtil.java b/cloud-server-management/src/main/java/com/dsh/course/util/UUIDUtil.java new file mode 100644 index 0000000..702dc76 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/util/UUIDUtil.java @@ -0,0 +1,101 @@ +package com.dsh.course.util; + + + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.UUID; + +/** + * 定义生成随机码的工具类 + */ +public class UUIDUtil { + + private int i = 1; + + + /** + * 定义生成原生的UUID随机码 + * @return + */ + public static String getNativeUUID(){ + return UUID.randomUUID().toString(); + } + + + /** + * 生成32位随机码 + * @return + */ + public static String getRandomCode(){ + return UUIDUtil.getNativeUUID().replaceAll("-", ""); + } + + + /** + * 获取给定长度的随机码 + * @param num + * @return + * @throws Exception + */ + public static String getRandomCode(Integer num) throws Exception{ + String str = null; + if(0 < num){ + if(num % 32 > 0){ + Integer s = num / 32; + Integer l = num % 32; + StringBuffer sb = new StringBuffer(); + for(int i = 0; i < s; i++){ + sb.append(UUIDUtil.getRandomCode()); + } + sb.append(UUIDUtil.getRandomCode().substring(0, l)); + str = sb.toString(); + }else if(num % 32 == 0){ + Integer s = num / 32; + StringBuffer sb = new StringBuffer(); + for(int i = 0; i < s; i++){ + sb.append(UUIDUtil.getRandomCode()); + } + str = sb.toString(); + }else{ + str = UUIDUtil.getRandomCode().substring(0, num); + } + }else{ + throw new Exception("参数只能大于0"); + } + return str; + } + + + /** + * 获取根据当前时间的字符串数据 + * @return + */ + public synchronized static String getTimeStr(){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmssS"); + return simpleDateFormat.format(new Date()); + } + + + /** + * @Description: 获取数字随机码 + * @Author pzb + * @Date 2021/8/11 16:52 + * @Param + * @Return + * @Exception + */ + public static String getNumberRandom(Integer num){ + if(null == num){ + num = 32; + } + StringBuffer sb = new StringBuffer(); + for(int i = 0; i < num; i++){ + sb.append(Double.valueOf(Math.random() * 10).intValue()); + } + return sb.toString(); + } + + + +} 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 05343e6..09efcda 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 @@ -1,15 +1,21 @@ package com.dsh.guns.modular.system.controller.code; +import com.dsh.course.feignClient.account.*; +import com.dsh.course.feignClient.competition.model.Competition; +import com.dsh.course.feignClient.competition.model.CompetitionQuery; +import com.dsh.course.feignClient.competition.model.PaymentCompetition; +import com.dsh.course.feignClient.competition.model.TCompetition; +import com.dsh.course.feignClient.other.SiteClient; +import com.google.common.collect.Lists; 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.feignClient.account.AppUserClient; -import com.dsh.course.feignClient.account.CityClient; -import com.dsh.course.feignClient.account.FinanceClient; import com.dsh.course.feignClient.account.model.*; import com.dsh.course.feignClient.competition.CompetitionClient; import com.dsh.course.feignClient.course.CancelledClassesClient; +import com.dsh.course.feignClient.course.CoursePackagePaymentClient; +import com.dsh.course.feignClient.other.StoreClient; import com.dsh.course.mapper.UserMapper; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.base.controller.BaseController; @@ -18,10 +24,13 @@ import com.dsh.guns.core.util.ToolUtil; import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.service.*; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; +import com.sun.org.apache.bcel.internal.generic.NEW; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -30,6 +39,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.stream.Collectors; /** * 财务控制器 @@ -50,6 +60,17 @@ private FinanceClient financeClient; @Autowired private CancelledClassesClient cancelledClassesClient; + @Autowired + private StoreClient storeClient; + @Autowired + private CoursePackagePaymentClient coursePackagePaymentClient; + @Autowired + private VipPaymentClient vipPaymentClient; + @Autowired + private CompetitionClient competitionClient; + @Autowired + private SiteClient siteClient; + /** * 跳转到充值记录页面 @@ -116,6 +137,58 @@ return total; } /** + * 获取报名订单统计数据 + */ + @RequestMapping(value = "/getData") + @ResponseBody + public RegisterDataVO getData(String province,String city,Integer storeId,String registerTime + ,String userName,String phone,String studentName,String coursePackageName,String salesName,Integer orderSource) { + RegisterDataVO registerDataVO = new RegisterDataVO(); + RegisterOrderQuery query = new RegisterOrderQuery(); + query.setProvince(province); + query.setCity(city); + query.setStoreId(storeId); + query.setRegisterTime(registerTime); + query.setUserName(userName); + query.setUserIds(Lists.newArrayList()); + query.setPhone(phone); + query.setStudentName(studentName); + query.setStudentIds(Lists.newArrayList()); + query.setCoursePackageName(coursePackageName); + query.setSalesName(salesName); + query.setOrderSource(orderSource); + + AppUserByNameAndPhoneDTO appUserByNameAndPhoneDTO = new AppUserByNameAndPhoneDTO(); + appUserByNameAndPhoneDTO.setUserName(query.getUserName()); + appUserByNameAndPhoneDTO.setPhone(query.getPhone()); + List<TAppUser> tAppUsers = appUserClient.queryAPPUserByNameAndPhone(appUserByNameAndPhoneDTO); + // 使用 Stream API 将 tAppUsers 中的 id 收集到一个集合中 + List<Integer> userIds = tAppUsers.stream() + .map(TAppUser::getId) // 使用方法引用获取每个对象的 id + .collect(Collectors.toList()); + query.setUserIds(userIds); + if (userIds.size()!=0){ + List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query); + BigDecimal total = new BigDecimal("0.00"); + BigDecimal result = new BigDecimal("0.00"); + int playPaiCoin = 0 ; + for (RegisterOrderVO rechargeRecordsVO : registerOrderVOS) { + if (rechargeRecordsVO.getMoney()!=null){ + BigDecimal amount = rechargeRecordsVO.getMoney(); + total = total.add(amount); // 将新的值赋给total + result = result.add(amount); // 将新的值赋给result + } + if (rechargeRecordsVO.getPlayPaiCoin()!=null){ + playPaiCoin += rechargeRecordsVO.getPlayPaiCoin(); + } + } + registerDataVO.setCashPayment(total); + registerDataVO.setTotalOrder(registerOrderVOS.size()); + registerDataVO.setPlayPaiCoin(playPaiCoin); + } + return registerDataVO; + } + /** * 跳转到消课记录页面 */ @RequestMapping("/cancelledClasses") @@ -124,6 +197,397 @@ Integer objectType = UserExt.getUser().getObjectType(); model.addAttribute("objectType",objectType); return PREFIX + "CancelledClasses.html"; + } + /** + * 根据市获取门店 + */ + @RequestMapping(value = "/getStore") + @ResponseBody + public List<Store> getStore(String city) { + return storeClient.getStore(city); + } + /** + * 跳转到消课记录页面 + */ + @RequestMapping("/registrationOrder") + public String registrationOrder(Model model) { + List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list",list); + Integer objectType = UserExt.getUser().getObjectType(); + model.addAttribute("userType",objectType); + model.addAttribute("roleType",objectType); + return PREFIX + "RegistrationOrder.html"; + } + /** + * 跳转到消课记录页面 + */ + @RequestMapping("/income") + public String income(Model model) { + Integer objectType = UserExt.getUser().getObjectType(); + model.addAttribute("roleType",objectType); + return PREFIX + "income.html"; + } + /** + * 获取收入管理列表 + */ + @RequestMapping(value = "/incomeListAll") + @ResponseBody + public List<IncomeVO> incomeListAll(String time,Integer incomeType,String userName,String amount) { + // 充值记录查询query + RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); + // 报名课程查询query + RegisterOrderQuery query = new RegisterOrderQuery(); + // 赛事活动查询query + CompetitionQuery competitionQuery = new CompetitionQuery(); + // 会员支付查询query + IncomeQuery incomeQuery = new IncomeQuery(); + // 场地预约记录查询query + SiteBookingQuery siteBookingQuery = new SiteBookingQuery(); + AppUserByNameAndPhoneDTO appUserByNameAndPhoneDTO = new AppUserByNameAndPhoneDTO(); + appUserByNameAndPhoneDTO.setUserName(userName); + if (userName!=null){ + if (!userName.equals("")){ + List<TAppUser> tAppUsers = appUserClient.queryAPPUserByNameAndPhone(appUserByNameAndPhoneDTO); + // 用户ids + List<Integer> collect = tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()); + competitionQuery.setUserIds(collect); + rechargeRecordsQuery.setUserIds(collect); + query.setUserIds(collect); + incomeQuery.setUserIds(collect); + siteBookingQuery.setUserIds(collect); + } + } + if (amount==null || amount.equals("")){ + siteBookingQuery.setAmount(null); + query.setAmount(null); + rechargeRecordsQuery.setAmount(null); + competitionQuery.setAmount(null); + incomeQuery.setAmount(null); + }else { + siteBookingQuery.setAmount(new BigDecimal(amount)); + query.setAmount(new BigDecimal(amount)); + rechargeRecordsQuery.setAmount(new BigDecimal(amount)); + competitionQuery.setAmount(new BigDecimal(amount)); + incomeQuery.setAmount(new BigDecimal(amount)); + } + + siteBookingQuery.setTime(time); + query.setRegisterTime(time); + rechargeRecordsQuery.setTime(time); + competitionQuery.setTime(time); + incomeQuery.setTime(time); + Integer roleType = UserExt.getUser().getObjectType(); + IncomeVO incomeVO = new IncomeVO(); + List<IncomeVO> incomeVOS = new ArrayList<>(); + + if (roleType == 1){ + if ( incomeType==null || incomeType == 1){ + // 会员支付记录 + List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery); + for (VipPayment vipPayment : vipPayments) { + + TAppUser tAppUser = appUserClient.queryById(vipPayment.getAppUserId()); + IncomeVO temp = new IncomeVO(); + temp.setId(vipPayment.getId()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(""); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setAmount(new BigDecimal(vipPayment.getAmount().toString())); + temp.setIncomeType(1); + temp.setState(vipPayment.getState()); + temp.setInsertTime(vipPayment.getInsertTime()); + incomeVOS.add(temp); + } + } + if ( incomeType==null || incomeType == 2) { + // 充值记录 + List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery); + for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) { + TAppUser tAppUser = appUserClient.queryById(rechargeRecordsVO.getAppUserId()); + IncomeVO temp = new IncomeVO(); + temp.setId(rechargeRecordsVO.getId().intValue()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(""); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(rechargeRecordsVO.getInsertTime()); + if (rechargeRecordsVO.getAmount() != null) { + temp.setAmount(rechargeRecordsVO.getAmount()); + } + temp.setIncomeType(2); + temp.setState(rechargeRecordsVO.getState()); + incomeVOS.add(temp); + } + } + if ( incomeType==null || incomeType == 3) { + // 报名课程记录 + List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query); + for (RegisterOrderVO registerOrderVO : registerOrderVOS) { + if (registerOrderVO.getMoney() == null) { + continue; + } + TAppUser tAppUser = appUserClient.queryById(registerOrderVO.getAppUserId()); + IncomeVO temp = new IncomeVO(); + temp.setId(registerOrderVO.getId().intValue()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(registerOrderVO.getStoreName()); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(registerOrderVO.getInsertTime()); + if (registerOrderVO.getMoney() != null) { + temp.setAmount(registerOrderVO.getMoney()); + } + temp.setIncomeType(3); + temp.setState(registerOrderVO.getPayStatus()); + incomeVOS.add(temp); + } + } + if(roleType !=3) { + if (incomeType == null || incomeType == 4) { + // 报名活动 + List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery); + for (PaymentCompetition competition : competitions) { + if (competition.getPayStatus() == 3) { + continue; + } + TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId()); + Competition competition1 = competitionClient.queryById(competition.getCompetitionId()); + Store store = storeClient.getStoreById(competition1.getStoreId()); + IncomeVO temp = new IncomeVO(); + temp.setId(competition.getId().intValue()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(store.getName()); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(competition.getInsertTime()); + + if (competition.getAmount() != null) { + temp.setAmount(new BigDecimal(competition.getAmount().toString())); + } + temp.setIncomeType(4); + temp.setState(competition.getPayStatus()); + incomeVOS.add(temp); + } + } + } + if (incomeType == null || incomeType == 5) { + // 预约场地 + List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery); + for (SiteBooking siteBooking : siteBookings) { + IncomeVO temp = new IncomeVO(); + if (siteBooking.getStatus() == 0 || siteBooking.getStatus() == 5 || siteBooking.getStatus() == 4) { + temp.setState(1); + } else { + temp.setState(2); + } + TAppUser tAppUser = appUserClient.queryById(siteBooking.getAppUserId()); + Store store = storeClient.getStoreById(siteBooking.getStoreId()); + + temp.setId(siteBooking.getId()); + temp.setProvince(siteBooking.getProvince()); + temp.setCity(siteBooking.getCity()); + temp.setStoreName(store.getName()); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(siteBooking.getInsertTime()); + if (siteBooking.getPayMoney() != null) { + temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString())); + } + temp.setIncomeType(5); + incomeVOS.add(temp); + } + } + } + return incomeVOS; + } + /** + * 获取收入管理列表 + */ + @RequestMapping(value = "/getIncomeData") + @ResponseBody + public Object getIncomeData(String time,Integer incomeType,String userName,String amount) { + // 充值记录查询query + RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); + // 报名课程查询query + RegisterOrderQuery query = new RegisterOrderQuery(); + // 赛事活动查询query + CompetitionQuery competitionQuery = new CompetitionQuery(); + // 会员支付查询query + IncomeQuery incomeQuery = new IncomeQuery(); + // 场地预约记录查询query + SiteBookingQuery siteBookingQuery = new SiteBookingQuery(); + AppUserByNameAndPhoneDTO appUserByNameAndPhoneDTO = new AppUserByNameAndPhoneDTO(); + appUserByNameAndPhoneDTO.setUserName(userName); + if (userName!=null){ + if (!userName.equals("")){ + List<TAppUser> tAppUsers = appUserClient.queryAPPUserByNameAndPhone(appUserByNameAndPhoneDTO); + // 用户ids + List<Integer> collect = tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()); + competitionQuery.setUserIds(collect); + rechargeRecordsQuery.setUserIds(collect); + query.setUserIds(collect); + incomeQuery.setUserIds(collect); + siteBookingQuery.setUserIds(collect); + } + } + if (amount==null || amount.equals("")){ + siteBookingQuery.setAmount(null); + query.setAmount(null); + rechargeRecordsQuery.setAmount(null); + competitionQuery.setAmount(null); + incomeQuery.setAmount(null); + }else { + siteBookingQuery.setAmount(new BigDecimal(amount)); + query.setAmount(new BigDecimal(amount)); + rechargeRecordsQuery.setAmount(new BigDecimal(amount)); + competitionQuery.setAmount(new BigDecimal(amount)); + incomeQuery.setAmount(new BigDecimal(amount)); + } + + siteBookingQuery.setTime(time); + query.setRegisterTime(time); + rechargeRecordsQuery.setTime(time); + competitionQuery.setTime(time); + incomeQuery.setTime(time); + Integer roleType = UserExt.getUser().getObjectType(); + IncomeVO incomeVO = new IncomeVO(); + List<IncomeVO> incomeVOS = new ArrayList<>(); + + if (roleType == 1){ + if ( incomeType==null || incomeType == 1){ + // 会员支付记录 + List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery); + for (VipPayment vipPayment : vipPayments) { + + TAppUser tAppUser = appUserClient.queryById(vipPayment.getAppUserId()); + IncomeVO temp = new IncomeVO(); + temp.setId(vipPayment.getId()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(""); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setAmount(new BigDecimal(vipPayment.getAmount().toString())); + temp.setIncomeType(1); + temp.setState(vipPayment.getState()); + temp.setInsertTime(vipPayment.getInsertTime()); + incomeVOS.add(temp); + } + } + if ( incomeType==null || incomeType == 2) { + // 充值记录 + List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery); + for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) { + TAppUser tAppUser = appUserClient.queryById(rechargeRecordsVO.getAppUserId()); + IncomeVO temp = new IncomeVO(); + temp.setId(rechargeRecordsVO.getId().intValue()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(""); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(rechargeRecordsVO.getInsertTime()); + if (rechargeRecordsVO.getAmount() != null) { + temp.setAmount(rechargeRecordsVO.getAmount()); + } + temp.setIncomeType(2); + temp.setState(rechargeRecordsVO.getState()); + incomeVOS.add(temp); + } + } + if ( incomeType==null || incomeType == 3) { + // 报名课程记录 + List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query); + for (RegisterOrderVO registerOrderVO : registerOrderVOS) { + if (registerOrderVO.getMoney() == null) { + continue; + } + TAppUser tAppUser = appUserClient.queryById(registerOrderVO.getAppUserId()); + IncomeVO temp = new IncomeVO(); + temp.setId(registerOrderVO.getId().intValue()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(registerOrderVO.getStoreName()); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(registerOrderVO.getInsertTime()); + if (registerOrderVO.getMoney() != null) { + temp.setAmount(registerOrderVO.getMoney()); + } + temp.setIncomeType(3); + temp.setState(registerOrderVO.getPayStatus()); + incomeVOS.add(temp); + } + } + if(roleType !=3) { + if (incomeType == null || incomeType == 4) { + // 报名活动 + List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery); + for (PaymentCompetition competition : competitions) { + if (competition.getPayStatus() == 3) { + continue; + } + TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId()); + Competition competition1 = competitionClient.queryById(competition.getCompetitionId()); + Store store = storeClient.getStoreById(competition1.getStoreId()); + IncomeVO temp = new IncomeVO(); + temp.setId(competition.getId().intValue()); + temp.setProvince(tAppUser.getProvince()); + temp.setCity(tAppUser.getCity()); + temp.setStoreName(store.getName()); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(competition.getInsertTime()); + + if (competition.getAmount() != null) { + temp.setAmount(new BigDecimal(competition.getAmount().toString())); + } + temp.setIncomeType(4); + temp.setState(competition.getPayStatus()); + incomeVOS.add(temp); + } + } + } + if (incomeType == null || incomeType == 5) { + // 预约场地 + List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery); + for (SiteBooking siteBooking : siteBookings) { + IncomeVO temp = new IncomeVO(); + if (siteBooking.getStatus() == 0 || siteBooking.getStatus() == 5 || siteBooking.getStatus() == 4) { + temp.setState(1); + } else { + temp.setState(2); + } + TAppUser tAppUser = appUserClient.queryById(siteBooking.getAppUserId()); + Store store = storeClient.getStoreById(siteBooking.getStoreId()); + + temp.setId(siteBooking.getId()); + temp.setProvince(siteBooking.getProvince()); + temp.setCity(siteBooking.getCity()); + temp.setStoreName(store.getName()); + temp.setPayUser(tAppUser.getName()); + temp.setPhone(tAppUser.getPhone()); + temp.setInsertTime(siteBooking.getInsertTime()); + if (siteBooking.getPayMoney() != null) { + temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString())); + } + temp.setIncomeType(5); + incomeVOS.add(temp); + } + } + } + BigDecimal totalAmount = BigDecimal.ZERO; // 初始化累加变量为0 + + for (IncomeVO vo : incomeVOS) { + BigDecimal totalMoney = vo.getAmount(); + totalAmount = totalAmount.add(totalMoney); // 累加每个IncomeVO对象的amount + } + return totalAmount; } /** * 获取消课记录 @@ -138,6 +602,41 @@ coachQuery.setTime(beginTime); return cancelledClassesClient.listAll(coachQuery); } + /** + * 获取报名订单记录 + */ + @RequestMapping(value = "/registerListAll") + @ResponseBody + public List<RegisterOrderVO> registerListAll(String province,String city,Integer storeId,String registerTime + ,String userName,String phone,String studentName,String coursePackageName,String salesName,Integer orderSource) { + RegisterOrderQuery query = new RegisterOrderQuery(); + query.setProvince(province); + query.setCity(city); + query.setStoreId(storeId); + query.setRegisterTime(registerTime); + query.setUserName(userName); + query.setUserIds(Lists.newArrayList()); + query.setPhone(phone); + query.setStudentName(studentName); + query.setStudentIds(Lists.newArrayList()); + query.setCoursePackageName(coursePackageName); + query.setSalesName(salesName); + query.setOrderSource(orderSource); + AppUserByNameAndPhoneDTO appUserByNameAndPhoneDTO = new AppUserByNameAndPhoneDTO(); + appUserByNameAndPhoneDTO.setUserName(query.getUserName()); + appUserByNameAndPhoneDTO.setPhone(query.getPhone()); + List<TAppUser> tAppUsers = appUserClient.queryAPPUserByNameAndPhone(appUserByNameAndPhoneDTO); + // 使用 Stream API 将 tAppUsers 中的 id 收集到一个集合中 + List<Integer> userIds = tAppUsers.stream() + .map(TAppUser::getId) // 使用方法引用获取每个对象的 id + .collect(Collectors.toList()); + query.setUserIds(userIds); + if (userIds.size()==0){ + return new ArrayList<>(); + } + + return coursePackagePaymentClient.listAllRegister(query); + } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/AppUserByNameAndPhoneDTO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/AppUserByNameAndPhoneDTO.java new file mode 100644 index 0000000..4cb195f --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/AppUserByNameAndPhoneDTO.java @@ -0,0 +1,12 @@ +package com.dsh.guns.modular.system.model; + +import lombok.Data; + +/** + * 通过用户姓名和电话进行模糊查询DTO + */ +@Data +public class AppUserByNameAndPhoneDTO { + private String userName; + private String phone; +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeQuery.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeQuery.java new file mode 100644 index 0000000..1d65760 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeQuery.java @@ -0,0 +1,24 @@ +package com.dsh.guns.modular.system.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 收入管理Query + */ +@Data +public class IncomeQuery { + // 收入时间 + private String time; + // 收入类型 + private Integer incomeType; + // 用户姓名 + private String userName; + // 收入金额 + private BigDecimal amount; + // 用户ids + private List<Integer> userIds; + +} 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 new file mode 100644 index 0000000..2538a07 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeVO.java @@ -0,0 +1,36 @@ +package com.dsh.guns.modular.system.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 收入管理列表VO + */ +@Data +public class IncomeVO { + /** + {title: '所在省', field: 'province', visible: roleType==1?true:false, align: 'center', valign: 'middle'}, + {title: '所在市', field: 'city', visible: roleType==1?true:false, align: 'center', valign: 'middle'}, + {title: '消费门店', field: 'storeName', visible: roleType==1?true:false, align: 'center', valign: 'middle'}, + {title: '用户姓名', field: 'payUser', visible: true, align: 'center', valign: 'middle'}, + {title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'}, + {title: '金 额', field: 'amount', visible: true, align: 'center', valign: 'middle'}, + {title: '收入类型', field: 'incomeType', visible: true, align: 'center', valign: 'middle', + formatter:function (data) {return{1:"加入会员",2:"充值",3:"报名课程",4:"报名赛事活动",5:"预约场地"}[data]}}, + {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle',formatter:function (data) {return{1:"已支付",2:"未支付"}[data]}} + */ + private Integer id; + private String province; + private String city; + private String storeName; + private String payUser; + private String phone; + private BigDecimal amount; + private Integer incomeType; + private Integer state; + @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/RechargeRecordsQuery.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsQuery.java index fa23d17..1f66a7a 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsQuery.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsQuery.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 充值记录列表查询Query @@ -19,5 +20,6 @@ * 1 = 会员 2 =非会员 */ private Integer type; - + private List<Integer> userIds; + private BigDecimal amount; } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java index 1b092e2..f3c051d 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsVO.java @@ -34,5 +34,8 @@ * 1 = 会员 2 =非会员 */ private Integer type; - + private Integer appUserId; + private Integer state; + @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/RegisterDataVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterDataVO.java new file mode 100644 index 0000000..14d202c --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterDataVO.java @@ -0,0 +1,21 @@ +package com.dsh.guns.modular.system.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.models.auth.In; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 报名订单统计数据VO + */ +@Data +public class RegisterDataVO { + + private Integer totalOrder; + private BigDecimal cashPayment; + + private Integer playPaiCoin; + +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderQuery.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderQuery.java new file mode 100644 index 0000000..91151ee --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderQuery.java @@ -0,0 +1,39 @@ +package com.dsh.guns.modular.system.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 报名订单列表查询Query + */ +@Data +public class RegisterOrderQuery { + // 省 + private String province; + // 市 + private String city; + // 门店名称 + private Integer storeId; + // 报名时间 + private String registerTime; + // 购买用户 + private String userName; + // 购买用户ids + private List<Integer> userIds; + // 联系方式 + private String phone; + // 报名学员 + private String studentName; + // 报名学员ids + private List<Integer> studentIds; + // 课包名称 + private String coursePackageName; + // 销售人员 + private String salesName; + // 订单来源 + private Integer orderSource; + // 订单金额 + private BigDecimal amount; +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderVO.java new file mode 100644 index 0000000..438a743 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderVO.java @@ -0,0 +1,60 @@ +package com.dsh.guns.modular.system.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 报名订单列表VO + */ +@Data +public class RegisterOrderVO { + /** + * + {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '所在省市', field: 'provinceAndCity', visible: role==1?true:false, align: 'center', valign: 'middle'}, + {title: '所属门店', field: 'storeName', visible: role!=3?true:false, align: 'center', valign: 'middle'}, + {title: '购买用户', field: 'payUser', visible: true, align: 'center', valign: 'middle'}, + {title: '联系方式', field: 'phone', visible: true, align: 'center', valign: 'middle'}, + {title: '报名学员', field: 'payStudent', visible: true, align: 'center', valign: 'middle'}, + {title: '报名时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'}, + {title: '支付价格', field: 'payMoneyAndType', visible: true, align: 'center', valign: 'middle'}, + {title: '课包名称', field: 'coursePackage', visible: true, align: 'center', valign: 'middle'}, + {title: '订单来源', field: 'payUserType', visible: true, align: 'center', valign: 'middle', + formatter:function (data) {return{1:"线上",2:"线下"}[data]}}, + {title: '销售人员', field: 'salesName', visible: true, align: 'center', valign: 'middle'} + */ + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long id; + private String provinceAndCity; + // 门店id + private Integer storeId; + private String storeName; + + private String coursePackageName; + private Integer coursePackageId; + // 用户id + private Integer appUserId; + private String payUser; + private String phone; + // 学员id + private Integer studentId; + private String payStudent; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date insertTime; + // 支付金额 + private BigDecimal money; + // 玩湃币价格/积分 + private Integer playPaiCoin; + // 该字段用于展示在前端 + private String payMoneyAndType; + // 订单来源 2 为线下购买 1为线上 + private Integer payUserType; + // 销售人员 + private String salesName; + // 支付方式 + private Integer payType; + private Integer payStatus; +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBooking.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBooking.java new file mode 100644 index 0000000..8858260 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBooking.java @@ -0,0 +1,179 @@ +package com.dsh.guns.modular.system.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 io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author zhibing.pu + * @date 2023/7/13 16:11 + */ +@Data +@TableName("t_site_booking") +public class SiteBooking { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 业务流水号 + */ + @TableField("orderNo") + private String orderNo; + /** + * 省 + */ + @TableField("province") + private String province; + /** + * 省编号 + */ + @TableField("provinceCode") + private String provinceCode; + /** + * 市名称 + */ + @TableField("city") + private String city; + /** + * 市编号 + */ + @TableField("cityCode") + private String cityCode; + /** + * 门店id + */ + @TableField("storeId") + private Integer storeId; + /** + * 场地id + */ + @TableField("siteId") + private Integer siteId; + /** + * 用户id + */ + @TableField("appUserId") + private Integer appUserId; + /** + * 预约时段 + */ + @TableField("times") + private String times; + /** + * 预约开始时间 + */ + @TableField("startTime") + @ApiModelProperty("预约开始时间") + private Date startTime; + /** + * 预约结束 + */ + @TableField("endTime") + @ApiModelProperty("预约结束时间") + private Date endTime; + /** + * 预约人 + */ + @TableField("booker") + @ApiModelProperty("预约人") + private String booker; + /** + * 联系方式 + */ + @TableField("phone") + @ApiModelProperty("联系方式") + private String phone; + /** + * 支付方式(1=微信,2=支付宝,3=玩湃比,4=手动支付) + */ + @TableField("payType") + private Integer payType; + /** + * 支付时间 + */ + @TableField("payTime") + @ApiModelProperty("支付时间") + private Date payTime; + /** + * 支付金额 + */ + @TableField("payMoney") + @ApiModelProperty("支付金额") + private Double payMoney; + /** + * 优惠券id + */ + @TableField("userCouponId") + private Long userCouponId; + /** + * 状态(0=待支付,1=待核销,2=已到店,3=已完成,4=已过期,5=已取消) + */ + @TableField("status") + @ApiModelProperty("0=待支付,1=待核销,2=已到店,3=已完成,4=已过期,5=已取消") + private Integer status; + /** + * 第三方支付流水号 + */ + @TableField("payOrderNo") + private String payOrderNo; + /** + * 手动支付操作用户id + */ + @TableField("payUserId") + private Integer payUserId; + /** + * 取消用户id + */ + @TableField("cancelUserId") + private Integer cancelUserId; + /** + * 取消凭证 + */ + @TableField("voucher") + private String voucher; + /** + * 取消备注 + */ + @TableField("remark") + private String remark; + /** + * 取消时间 + */ + @TableField("cancelTime") + private Date cancelTime; + /** + * 第三方取消退款流水号 + */ + @TableField("refundOrderNo") + private String refundOrderNo; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("state") + private Integer state; + /** + * 添加时间 + */ + @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date insertTime; + @TableField("nextName") + @ApiModelProperty("场地名称") + private String nextName; + @TableField("isHalf") + @ApiModelProperty("半场 是否半场 1是 2否") + private Integer isHalf; + @TableField("halfName") + @ApiModelProperty("半场名称 ") + private String halfName; + @TableField("goType") + private Integer goType; +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBookingQuery.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBookingQuery.java new file mode 100644 index 0000000..c0975da --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBookingQuery.java @@ -0,0 +1,20 @@ +package com.dsh.guns.modular.system.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 场地预约记录Query + */ +@Data +public class SiteBookingQuery { + // 收入时间 + private String time; + // 收入金额 + private BigDecimal amount; + // 用户ids + private List<Integer> userIds; + +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java index b716e68..4ec4d3e 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java @@ -159,4 +159,9 @@ */ @TableField("payUserName") private String payUserName; + /** + * 销售人员(线下购课添加购课订单时使用) + */ + @TableField("salesName") + private String salesName; } diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/CancelledClasses.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/CancelledClasses.html index 5efb96e..0709744 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/CancelledClasses.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/CancelledClasses.html @@ -10,7 +10,7 @@ <div class="col-sm-12"> <div class="row"> <div class="col-sm-3"> - <#TimeCon id="beginTime" name="有效期" isTime="false"/> + <#TimeCon id="beginTime" name="消课时间" isTime="false"/> </div> <div class="col-sm-3"> @@ -50,7 +50,7 @@ laydate.render({ elem: '#beginTime' ,range: true - ,lang:"en" + ,lang:"CN" }); </script> @} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/Income.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/Income.html new file mode 100644 index 0000000..332c51f --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/Income.html @@ -0,0 +1,61 @@ +@layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <input hidden id="roleType" value="${roleType}"> + <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"> + <#TimeCon id="registerTime" name="收入时间" isTime="false"/> + </div> + <div class="col-sm-3"> + <#SelectCon id="orderSource" name="收入类型" > + <option value="">全部</option> + @if(roleType == 1){ + <option value="1">加入会员</option> + <option value="2">充值</option> + @} + <option value="3">报名课程</option> + @if(roleType != 3){ + <option value="4">报名赛事活动</option> + @} + <option value="5">预约场地</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="userName" name="用户姓名" /> + </div> + <div class="col-sm-3"> + <#NameCon id="money" name="收入金额" /> + </div> + + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TCompetition.resetSearch()" space="true"/> + </div> + </div> + <div class="ibox-title" style="display: flex"> + <h3 id ="totalMoney"></h3><h3>元</h3> + </div> + <#table id="TCompetitionTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/modular/system/finance/income.js"></script> +<script> + laydate.render({ + elem: '#registerTime' + ,range: true + ,lang:"CN" + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/RegistrationOrder.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/RegistrationOrder.html new file mode 100644 index 0000000..bea38ae --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/finance/RegistrationOrder.html @@ -0,0 +1,106 @@ +@layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <input hidden id="roleType" value="${roleType}"> + <div class="ibox-title"> + <h5>报名订单</h5> + </div> + <div class="ibox-content"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + @if(roleType==1){ + <div class="col-sm-3"> + <div class="input-group"> + <div class="input-group-btn open"> + <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true"> + 所在省 + </button> + </div> + <select class="form-control" id="pCode" onchange="TCompetition.oneChange(this)"> + <option value="">全部</option> + @for(obj in list){ + <option value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + @} + @if(roleType==1){ + <div class="col-sm-3"> + <div class="input-group"> + <div class="input-group-btn open"> + <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true" > + 所在市 + </button> + </div> + <select class="form-control" onchange="TCompetition.getStore(this)" id="cCode"> + </select> + </div> + </div> + @} + @if(roleType!=3){ + <div class="col-sm-3"> + <div class="input-group"> + <div class="input-group-btn open"> + <button data-toggle="dropdown" class="btn btn-white dropdown-toggle"> + 所属门店 + </button> + </div> + <select class="form-control" id="store"> + </select> + </div> + </div> + @} + <div class="col-sm-3"> + <#TimeCon id="registerTime" name="报名时间" isTime="false"/> + </div> + <div class="col-sm-3"> + <#NameCon id="userName" name="购买用户" /> + </div> + <div class="col-sm-3"> + <#NameCon id="phone" name="联系方式" /> + </div> + <div class="col-sm-3"> + <#NameCon id="studentName" name="报名学员" /> + </div> + <div class="col-sm-3"> + <#NameCon id="coursePackageName" name="课包名称" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="orderSource" name="订单来源" > + <option value="">全部</option> + <option value="1">线上购课</option> + <option value="2">到店购课</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="salesName" name="销售人员" /> + </div> + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TCompetition.resetSearch()" space="true"/> + </div> + </div> + <div class="ibox-title" style="display: flex"> + <h3 id ="totalOrder"></h3> + <h3 id ="cashPayment"></h3><h3>元</h3> + <h3 id ="playPaiCoin"></h3> + </div> + <#table id="TCompetitionTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/modular/system/finance/RegistrationOrder.js"></script> +<script> + laydate.render({ + elem: '#registerTime' + ,range: true + ,lang:"CN" + }); +</script> +@} 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 b88d861..c35fc01 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 @@ -617,7 +617,6 @@ }else{ queryData['province'] = ""; } - queryData['city'] = $("#cCode").val(); queryData['coursePackageTypeId'] = $("#coursePackage").val(); queryData['coursePackageTypeName'] = $("#coursePackageName").val(); diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js index 1ab2025..7a49ada 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js @@ -384,6 +384,18 @@ }; TCompetition.threeChange = function (e) { + var oneId=$(e).val(); + var content1 = "<option value=''>请选择门店</option>"; + var ajax2=new $ax(Feng.ctxPath + "/cpPayment/getStore", function(data){ + $.each(data, function(k,v) { + content1 += "<option value='"+v.id+"'>"+v.name+"</option>"; + }); + $("#store").empty().append(content1); + }); + ajax2.set("city",oneId); + ajax2.start(); +}; +TCompetition.fourChange = function (e) { var content1 = "<option value=''>请选择门店</option>"; var ajax2=new $ax(Feng.ctxPath + "/cpPayment/getStore", function(data){ $.each(data, function(k,v) { @@ -394,7 +406,6 @@ ajax2.set("city",e); ajax2.start(); }; - TCompetition.getStudent = function () { var phone = $("#vipPhone").val(); @@ -507,8 +518,7 @@ if (option.text === city) { option.selected = true; c = option.text; - - TCompetition.threeChange(c) + TCompetition.fourChange(c) break; // 找到匹配的选项后,可以选择停止遍历 } diff --git a/cloud-server-management/src/main/webapp/static/modular/system/finance/RegistrationOrder.js b/cloud-server-management/src/main/webapp/static/modular/system/finance/RegistrationOrder.js new file mode 100644 index 0000000..ea117b1 --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/finance/RegistrationOrder.js @@ -0,0 +1,151 @@ +/** + * 车辆管理管理初始化 + */ +var TCompetition = { + id: "TCompetitionTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; +var language =1 +var roleType =$("#roleType").val() +/** + * 初始化表格的列 + */ +TCompetition.initColumn = function () { + return [ + {field: 'selectItem', checkbox: true}, + {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '所在省市', field: 'provinceAndCity', visible: roleType==1?true:false, align: 'center', valign: 'middle'}, + {title: '所属门店', field: 'storeName', visible: roleType!=3?true:false, align: 'center', valign: 'middle'}, + {title: '购买用户', field: 'payUser', visible: true, align: 'center', valign: 'middle'}, + {title: '联系方式', field: 'phone', visible: true, align: 'center', valign: 'middle'}, + {title: '报名学员', field: 'payStudent', visible: true, align: 'center', valign: 'middle'}, + {title: '报名时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'}, + {title: '支付价格', field: 'payMoneyAndType', visible: true, align: 'center', valign: 'middle'}, + {title: '课包名称', field: 'coursePackageName', visible: true, align: 'center', valign: 'middle'}, + {title: '订单来源', field: 'payUserType', visible: true, align: 'center', valign: 'middle', + formatter:function (data) { + return{1:"线上",2:"线下"}[data] + } + }, + {title: '销售人员', field: 'salesName', visible: true, align: 'center', valign: 'middle', + + } + ]; +}; + +/** + * 检查是否选中 + */ +TCompetition.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TCompetition.seItem = selected[0]; + return true; + } +}; + + + + +TCompetition.oneChange = function (e) { + console.log(111) + var oneId=$(e).val(); + + var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){ + if(data!=null){ + var content='<option value="">请选择</option>'; + $.each(data, function(k,v) { + + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +}; +TCompetition.getStore = function () { + console.log("调用") + var city = $('#cCode option:selected').text(); + var ajax = new $ax(Feng.ctxPath + "/finance/getStore", function (data) { + if (data != null) { + var content = '<option value="">请选择</option>'; + $.each(data, function (k, v) { + content += "<option value='" + v.id + "'>" + v.name + "</option>"; + }); + $("#store").empty().append(content); + } + }); + ajax.set("city", city); + ajax.start(); +} + +/** + * 查询车辆管理列表 + */ +TCompetition.search = function () { + var queryData = {}; + queryData['province'] = $("#pCode").val(); + queryData['city'] = $("#cCode").val(); + queryData['storeId'] = $("#store").val(); + queryData['registerTime'] = $("#registerTime").val(); + queryData['userName'] = $("#userName").val(); + queryData['phone'] = $("#phone").val(); + queryData['studentName'] = $("#studentName").val(); + queryData['coursePackageName'] = $("#coursePackageName").val(); + queryData['orderSource'] = $("#orderSource").val(); + queryData['salesName'] = $("#salesName").val(); + TCompetition.table.refresh({query: queryData}); + TCompetition.getData(); +}; +TCompetition.getData = function () { + var ajax = new $ax(Feng.ctxPath + "/finance/getData", function (data) { + var t1 = document.getElementById("totalOrder"); + var t2 = document.getElementById("cashPayment"); + var t3 = document.getElementById("playPaiCoin"); + t1.innerText = "总订单数:"+data.totalOrder+" "; + t2.innerText = "现金总收入:"+data.cashPayment+" "; + t3.innerText = "玩湃币总消耗:"+data.playPaiCoin+" "; + }); + ajax.set("province",$("#pCode").val()); + ajax.set("city",$("#cCode").val()); + ajax.set("storeId",$("#store").val()); + ajax.set("registerTime",$("#registerTime").val()); + ajax.set("userName",$("#userName").val()); + ajax.set("phone",$("#phone").val()); + ajax.set("studentName",$("#studentName").val()); + ajax.set("coursePackageName",$("#coursePackageName").val()); + ajax.set("orderSource",$("#orderSource").val()); + ajax.set("salesName",$("#salesName").val()); + ajax.start(); +}; + +TCompetition.resetSearch = function () { + $("#pCode").val(""); + $("#cCode").val(""); + $("#store").val(""); + $("#registerTime").val(""); + $("#userName").val(""); + $("#phone").val(""); + $("#beginTime").val(""); + $("#studentName").val(""); + $("#coursePackageName").val(""); + $("#orderSource").val(""); + $("#salesName").val(""); + TCompetition.search(); +}; + + +$(function () { + var defaultColunms = TCompetition.initColumn(); + var table = new BSTable(TCompetition.id, "/finance/registerListAll", defaultColunms); + table.setPaginationType("client"); + TCompetition.table = table.init(); + TCompetition.getData(); +}); + diff --git a/cloud-server-management/src/main/webapp/static/modular/system/finance/cancelledClasses.js b/cloud-server-management/src/main/webapp/static/modular/system/finance/cancelledClasses.js index 4b662dd..9359a6d 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/finance/cancelledClasses.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/finance/cancelledClasses.js @@ -16,7 +16,8 @@ return [ {field: 'selectItem', radio: true}, {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'}, - {title: '消课凭证', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '消课凭证', field: 'voucher', visible: false, align: 'center', valign: 'middle'}, + {title: '消课数量', field: 'cancelledClassesNumber', visible: false, align: 'center', valign: 'middle'}, {title: '所在省市', field: 'provinceAndCity', visible: objectType==1?true:false, align: 'center', valign: 'middle'}, {title: '上课门店', field: 'storeName', visible: true, align: 'center', valign: 'middle'}, {title: '学员姓名', field: 'studentName', visible: true, align: 'center', valign: 'middle'}, @@ -75,16 +76,15 @@ TCompetition.lookCancellationRecord = function(){ if(this.check()){ - - let imgs = ClassRecord.seItem.cancelClasses.split(";"); + let imgs = TCompetition.seItem.voucher.split(";"); let htmlStr = '<div class="form-horizontal">' + ' <div class="col-sm-11" style="padding: 20px;">' + ' <div class="form-group">\n' + - ' <label class="col-sm-8 control-label">课程名称:' + $("#name").text() + '</label>\n' + + ' <label class="col-sm-8 control-label">课程名称:' + TCompetition.seItem.courseName + '</label>\n' + ' </div>' + ' <div class="form-group">\n' + - ' <label class="col-sm-8 control-label">*上传凭证(请上传小于5张图片):</label>\n' + + ' <label class="col-sm-8 control-label">*上传凭证:</label>\n' + ' </div>' + ' <div class="form-group">\n' + ' <div class="col-sm-8" style="min-height: 200px;">\n' + @@ -100,7 +100,7 @@ ' <div class="form-group">\n' + ' <label class="col-sm-3 control-label">扣除课时数:</label>\n' + ' <div class="col-sm-9">\n' + - ' <input class="form-control" id="deductClassHour" value="' + ClassRecord.seItem.deductClassHour + '" type="number" min="0">' + + ' <input class="form-control" id="deductClassHour" value="' + TCompetition.seItem.cancelledClassesNumber + '" type="number" min="0">' + ' </div>\n' + ' </div>' + ' </div>' + diff --git a/cloud-server-management/src/main/webapp/static/modular/system/finance/income.js b/cloud-server-management/src/main/webapp/static/modular/system/finance/income.js new file mode 100644 index 0000000..8f3a726 --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/finance/income.js @@ -0,0 +1,150 @@ +/** + * 车辆管理管理初始化 + */ +var TCompetition = { + id: "TCompetitionTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; +var language =1 +var roleType =$("#roleType").val() +/** + * 初始化表格的列 + */ +TCompetition.initColumn = function () { + return [ + {field: 'selectItem', checkbox: true}, + {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '所在省', field: 'province', visible: roleType==1?true:false, align: 'center', valign: 'middle'}, + {title: '所在市', field: 'city', visible: roleType==1?true:false, align: 'center', valign: 'middle'}, + {title: '消费门店', field: 'storeName', visible: roleType==1?true:false, align: 'center', valign: 'middle'}, + {title: '用户姓名', field: 'payUser', visible: true, align: 'center', valign: 'middle'}, + {title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'}, + {title: '金 额', field: 'amount', visible: true, align: 'center', valign: 'middle'}, + {title: '消费时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'}, + {title: '收入类型', field: 'incomeType', visible: true, align: 'center', valign: 'middle', + formatter:function (data) { + return{1:"加入会员",2:"充值",3:"报名课程",4:"报名赛事活动",5:"预约场地"}[data] + } + }, + {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle', + formatter:function (data) { + return{1:"已支付",2:"未支付"}[data] + } + }, + ]; +}; + +/** + * 检查是否选中 + */ +TCompetition.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TCompetition.seItem = selected[0]; + return true; + } +}; + + + + +TCompetition.oneChange = function (e) { + console.log(111) + var oneId=$(e).val(); + + var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){ + if(data!=null){ + var content='<option value="">请选择</option>'; + $.each(data, function(k,v) { + + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +}; +TCompetition.getStore = function () { + console.log("调用") + var city = $('#cCode option:selected').text(); + var ajax = new $ax(Feng.ctxPath + "/finance/getStore", function (data) { + if (data != null) { + var content = '<option value="">请选择</option>'; + $.each(data, function (k, v) { + content += "<option value='" + v.id + "'>" + v.name + "</option>"; + }); + $("#store").empty().append(content); + } + }); + ajax.set("city", city); + ajax.start(); +} + +/** + * 查询车辆管理列表 + */ +TCompetition.search = function () { + var queryData = {}; + queryData['province'] = $("#pCode").val(); + queryData['city'] = $("#cCode").val(); + queryData['storeId'] = $("#store").val(); + queryData['time'] = $("#registerTime").val(); + queryData['userName'] = $("#userName").val(); + queryData['phone'] = $("#phone").val(); + queryData['studentName'] = $("#studentName").val(); + queryData['coursePackageName'] = $("#coursePackageName").val(); + queryData['incomeType'] = $("#orderSource").val(); + queryData['amount'] = $("#money").val(); + TCompetition.table.refresh({query: queryData}); + TCompetition.getData(); +}; +TCompetition.getData = function () { + var ajax = new $ax(Feng.ctxPath + "/finance/getIncomeData", function (data) { + var t1 = document.getElementById("totalMoney"); + + t1.innerText = "收入总金额:"+data; + + }); + ajax.set("province",$("#pCode").val()); + ajax.set("city",$("#cCode").val()); + ajax.set("storeId",$("#store").val()); + ajax.set("time",$("#registerTime").val()); + ajax.set("userName",$("#userName").val()); + ajax.set("phone",$("#phone").val()); + ajax.set("studentName",$("#studentName").val()); + ajax.set("coursePackageName",$("#coursePackageName").val()); + ajax.set("incomeType",$("#orderSource").val()); + ajax.set("amount",$("#money").val()); + ajax.start(); +}; + +TCompetition.resetSearch = function () { + $("#pCode").val(""); + $("#cCode").val(""); + $("#store").val(""); + $("#registerTime").val(""); + $("#userName").val(""); + $("#phone").val(""); + $("#beginTime").val(""); + $("#studentName").val(""); + $("#coursePackageName").val(""); + $("#orderSource").val(""); + $("#money").val(""); + TCompetition.search(); +}; + + +$(function () { + var defaultColunms = TCompetition.initColumn(); + var table = new BSTable(TCompetition.id, "/finance/incomeListAll", defaultColunms); + table.setPaginationType("client"); + TCompetition.table = table.init(); + TCompetition.getData(); +}); + diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java index 32bb027..220999a 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java @@ -64,14 +64,19 @@ /** + * 获取场地预约记录 + */ + @RequestMapping("/base/site/listAll") + public List<SiteBooking> listAll(@RequestBody SiteBookingQuery query){ + return siteBookingService.listAll(query); + } + /** * 获取所有场地 * @return */ @RequestMapping("/base/site/list") public List<TSiteDTO> listAll(@RequestBody SiteSearchVO vo){ - return siteTypeService.listAll(vo); - } /** * 获取场地有效期在两个月内的场地列表 diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java b/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java index 158c9f1..f5527a8 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java +++ b/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java @@ -4,6 +4,7 @@ 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.ApiModelProperty; import lombok.Data; @@ -162,6 +163,7 @@ * 添加时间 */ @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date insertTime; @TableField("nextName") @ApiModelProperty("场地名称") diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteBookingMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteBookingMapper.java index 72a48c6..b74ed6b 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteBookingMapper.java +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteBookingMapper.java @@ -3,7 +3,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.other.entity.SiteBooking; import com.dsh.other.model.BillingRequestOfType; +import com.dsh.other.model.SiteBookingQuery; +import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -13,4 +16,6 @@ public interface SiteBookingMapper extends BaseMapper<SiteBooking> { List<BillingRequestOfType> queryDatas(Integer appUserId, String monthStart, String monthEnd); + List<SiteBooking> listAll(@Param("query")SiteBookingQuery query, @Param("sTime")String sTime, @Param("eTime")String eTime, @Param("amount") BigDecimal amount); + } diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/SiteBookingQuery.java b/cloud-server-other/src/main/java/com/dsh/other/model/SiteBookingQuery.java new file mode 100644 index 0000000..99e2e98 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/model/SiteBookingQuery.java @@ -0,0 +1,20 @@ +package com.dsh.other.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 场地预约记录Query + */ +@Data +public class SiteBookingQuery { + // 收入时间 + private String time; + // 收入金额 + private BigDecimal amount; + // 用户ids + private List<Integer> userIds; + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/ISiteBookingService.java b/cloud-server-other/src/main/java/com/dsh/other/service/ISiteBookingService.java index 04e54e6..bc986b6 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/service/ISiteBookingService.java +++ b/cloud-server-other/src/main/java/com/dsh/other/service/ISiteBookingService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.other.entity.SiteBooking; import com.dsh.other.model.BillingRequestOfType; +import com.dsh.other.model.SiteBookingQuery; import java.util.List; @@ -13,4 +14,5 @@ public interface ISiteBookingService extends IService<SiteBooking> { List<BillingRequestOfType> queryDatas(Integer appUserId, String monthStart, String monthEnd); + List<SiteBooking> listAll(SiteBookingQuery query); } diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteBookingServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteBookingServiceImpl.java index f3f4788..5741812 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteBookingServiceImpl.java +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteBookingServiceImpl.java @@ -4,9 +4,13 @@ import com.dsh.other.entity.SiteBooking; import com.dsh.other.mapper.SiteBookingMapper; import com.dsh.other.model.BillingRequestOfType; +import com.dsh.other.model.SiteBookingQuery; import com.dsh.other.service.ISiteBookingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import java.math.BigDecimal; import java.util.List; /** @@ -15,8 +19,22 @@ */ @Service public class SiteBookingServiceImpl extends ServiceImpl<SiteBookingMapper, SiteBooking> implements ISiteBookingService { + @Autowired + private SiteBookingMapper siteBookingMapper; @Override public List<BillingRequestOfType> queryDatas(Integer appUserId, String monthStart, String monthEnd) { return this.baseMapper.queryDatas(appUserId,monthStart,monthEnd); } + + @Override + public List<SiteBooking> listAll(SiteBookingQuery query) { + String STime = null; + String ETime = null; + if (StringUtils.hasLength(query.getTime())) { + STime = query.getTime().split(" - ")[0] + " 00:00:00"; + ETime = query.getTime().split(" - ")[1] + " 23:59:59"; + } + + return siteBookingMapper.listAll(query,STime,ETime,query.getAmount()); + } } diff --git a/cloud-server-other/src/main/resources/mapper/SiteBookingMapper.xml b/cloud-server-other/src/main/resources/mapper/SiteBookingMapper.xml index 6244d3e..c6db7fa 100644 --- a/cloud-server-other/src/main/resources/mapper/SiteBookingMapper.xml +++ b/cloud-server-other/src/main/resources/mapper/SiteBookingMapper.xml @@ -16,4 +16,22 @@ and appUserId = #{appUserId} </if> </select> + + <select id="listAll" resultType="com.dsh.other.entity.SiteBooking"> + select * from t_site_booking t1 + <where> + <if test="amount!=null and amount!= ''"> + and t1.payMoney <= #{amount} + </if> + <if test="query.userIds != null and query.userIds.size()>0"> + AND t1.appUserId IN + <foreach collection="query.userIds" separator="," item="id" open="(" close=")"> + #{id} + </foreach> + </if> + <if test="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''"> + and t1.insertTime between #{sTime} and #{eTime} + </if> + </where> + </select> </mapper> -- Gitblit v1.7.1