app端:使用福利的账单接口bug;管理后台新增优惠券审核页面
| | |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), |
| | | @ApiImplicitParam(value = "年月", name = "yearMonth", required = true, dataType = "string"), |
| | | @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = true, dataType = "int"), |
| | | @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = false, dataType = "int"), |
| | | }) |
| | | public ResultUtil<List<ConsumeDetail>> getUserBillingDetails(String yearMonth,Integer recordId){ |
| | | try { |
| | |
| | | package com.dsh.account.feignclient.competition; |
| | | |
| | | |
| | | import com.dsh.account.feignclient.competition.model.BillingDataRequestVo; |
| | | import com.dsh.account.feignclient.competition.model.GetStuSourseList; |
| | | import com.dsh.account.feignclient.competition.model.PaymentCompetition; |
| | | import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; |
| | |
| | | List<PurchaseRecordVo> getStuSourseList(@RequestBody GetStuSourseList getStuSourseList); |
| | | |
| | | @PostMapping("/base/competition/getPayedCompetitions") |
| | | List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody Integer appUserId); |
| | | List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody BillingDataRequestVo requestVo); |
| | | |
| | | @PostMapping("/base/competition/getCancelOrderOfUserPay") |
| | | public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody Integer appUserId); |
| | | public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody BillingDataRequestVo appUserId); |
| | | |
| | | @PostMapping("/base/competition/getPlayPaiFGoldPayRecord") |
| | | List<PaymentCompetition> getPlayPaiFGoldPayRecord(@RequestBody Integer appUserId); |
New file |
| | |
| | | package com.dsh.account.feignclient.competition.model; |
| | | |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | public class BillingDataRequestVo { |
| | | |
| | | @ApiModelProperty(value = "开始时间") |
| | | private Date monthStart = null; |
| | | |
| | | @ApiModelProperty(value = "结束时间时间") |
| | | private Date monthEnd = null; |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Integer appUserId; |
| | | |
| | | } |
| | |
| | | package com.dsh.account.feignclient.course; |
| | | |
| | | import com.dsh.account.feignclient.competition.model.BillingDataRequestVo; |
| | | import com.dsh.account.feignclient.course.model.*; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment); |
| | | |
| | | @PostMapping("/base/coursePack/allAmountPayRecordOfUser") |
| | | public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody Integer appUserId); |
| | | public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody BillingDataRequestVo appUserId); |
| | | |
| | | @PostMapping("/base/coursePack/obtainStudentClassDetails") |
| | | List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody Integer stuId); |
| | |
| | | package com.dsh.account.feignclient.other; |
| | | |
| | | import com.dsh.account.feignclient.competition.model.BillingDataRequestVo; |
| | | import com.dsh.account.feignclient.other.model.SiteBooking; |
| | | import com.dsh.account.model.vo.exploreDetail.SiteVo; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | |
| | | public interface SiteClient { |
| | | |
| | | @PostMapping("/base/site/queryPaymentSiteDetail") |
| | | List<SiteBooking> getAllSiteBookingList(@RequestBody Integer appUserId); |
| | | List<SiteBooking> getAllSiteBookingList(@RequestBody BillingDataRequestVo appUserId); |
| | | |
| | | |
| | | @PostMapping("/base/site/queryPlaypaiGoldSiteDetail") |
| | |
| | | @ApiModelProperty(value = "金额 例如 -90 ") |
| | | private String consumeAmount; |
| | | |
| | | @ApiModelProperty(value = "1充值 2扣除") |
| | | private Integer type; |
| | | |
| | | } |
| | |
| | | import com.dsh.account.feignclient.activity.UserConponClient; |
| | | import com.dsh.account.feignclient.activity.model.*; |
| | | import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; |
| | | import com.dsh.account.feignclient.competition.model.BillingDataRequestVo; |
| | | import com.dsh.account.feignclient.competition.model.PaymentCompetition; |
| | | import com.dsh.account.feignclient.course.CoursePackageClient; |
| | | import com.dsh.account.feignclient.course.CoursePackageConfigClient; |
| | |
| | | monthStart = DateTimeHelper.getCurrentMouthStart(); |
| | | monthEnd = DateTimeHelper.getCurrentMouthEnd(); |
| | | } |
| | | |
| | | BillingDataRequestVo requestVo = new BillingDataRequestVo(); |
| | | requestVo.setMonthStart(monthStart); |
| | | requestVo.setMonthEnd(monthEnd); |
| | | requestVo.setAppUserId(appUserId); |
| | | // 1.赛事报名 |
| | | List<PaymentCompetition> allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(appUserId); |
| | | List<PaymentCompetition> allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(requestVo); |
| | | if (allCompetitionPayRecord.size() > 0 ){ |
| | | for (PaymentCompetition paymentCompetition : allCompetitionPayRecord) { |
| | | ConsumeDetail consumeDetail = new ConsumeDetail(); |
| | |
| | | consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime())); |
| | | consumeDetail.setConsumeAmount("-" + paymentCompetition.getAmount()); |
| | | details.add(consumeDetail); |
| | | consumeDetail.setType(1); |
| | | } |
| | | } |
| | | // 2.取消赛事报名 |
| | | List<PaymentCompetition> cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(appUserId); |
| | | List<PaymentCompetition> cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(requestVo); |
| | | if (cancelOrderOfUserPayRecord.size() > 0 ){ |
| | | for (PaymentCompetition paymentCompetition : cancelOrderOfUserPayRecord) { |
| | | ConsumeDetail consumeDetail = new ConsumeDetail(); |
| | | consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_EVENT_REGISTRATION.getMsg()); |
| | | consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime())); |
| | | consumeDetail.setConsumeAmount("+" + paymentCompetition.getAmount()); |
| | | consumeDetail.setType(1); |
| | | details.add(consumeDetail); |
| | | } |
| | | } |
| | | // 3.课包购买 |
| | | List<TCoursePackagePayment> amountPayRecord = paymentClient.getAmountPayRecord(appUserId); |
| | | List<TCoursePackagePayment> amountPayRecord = paymentClient.getAmountPayRecord(requestVo); |
| | | if (amountPayRecord.size() > 0 ){ |
| | | for (TCoursePackagePayment coursePackagePayment : amountPayRecord) { |
| | | ConsumeDetail consumeDetail = new ConsumeDetail(); |
| | | consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg()); |
| | | consumeDetail.setConsumeTime(simpleDateFormat.format(coursePackagePayment.getInsertTime())); |
| | | consumeDetail.setConsumeAmount("-" + coursePackagePayment.getCashPayment()); |
| | | consumeDetail.setType(2); |
| | | details.add(consumeDetail); |
| | | } |
| | | } |
| | | // 4.场地预约 |
| | | List<SiteBooking> allSiteBookingList = stClient.getAllSiteBookingList(appUserId); |
| | | List<SiteBooking> allSiteBookingList = stClient.getAllSiteBookingList(requestVo); |
| | | if (allSiteBookingList.size() > 0){ |
| | | for (SiteBooking booking : allSiteBookingList) { |
| | | ConsumeDetail consumeDetail = new ConsumeDetail(); |
| | |
| | | consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg()); |
| | | consumeDetail.setConsumeAmount("-" + booking.getPayMoney()); |
| | | consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getPayTime())); |
| | | consumeDetail.setType(2); |
| | | }else { |
| | | consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_VENUE_RESERVATION.getMsg()); |
| | | consumeDetail.setConsumeAmount("+" + booking.getPayMoney()); |
| | | consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getCancelTime())); |
| | | consumeDetail.setType(1); |
| | | } |
| | | details.add(consumeDetail); |
| | | } |
| | |
| | | consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.getMsg()); |
| | | consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); |
| | | consumeDetail.setConsumeAmount("-" + vipPayment.getAmount()); |
| | | consumeDetail.setType(2); |
| | | details.add(consumeDetail); |
| | | } |
| | | } |
| | |
| | | consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins()); |
| | | consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); |
| | | consumeDetail.setConsumeAmount("-" + rechargeRecord.getAmount()); |
| | | consumeDetail.setType(2); |
| | | details.add(consumeDetail); |
| | | } |
| | | } |
| | |
| | | return date2.compareTo(date1); |
| | | } |
| | | }); |
| | | |
| | | if (ToolUtil.isNotEmpty(recordId)){ |
| | | details = details.stream() |
| | | .filter(response -> Objects.equals(response.getType(), recordId)) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | } |
| | | return details; |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.dsh.activity.entity.Coupon; |
| | | import com.dsh.activity.entity.UserCoupon; |
| | | import com.dsh.activity.feignclient.model.CouponExamineListSearch; |
| | | import com.dsh.activity.feignclient.model.CouponListOfSearch; |
| | | import com.dsh.activity.model.CouponListVo; |
| | | import com.dsh.activity.model.request.CommodityRequest; |
| | |
| | | import com.dsh.activity.util.GDMapGeocodingUtil; |
| | | import com.dsh.activity.util.ResultUtil; |
| | | import com.dsh.activity.util.TokenUtil; |
| | | import com.dsh.activity.util.ToolUtil; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | |
| | | return mapList; |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/coupon/couponExamineListSearch") |
| | | public List<Map<String,Object>> getCouponExamineListOfSearch(@RequestBody CouponExamineListSearch ofSearch){ |
| | | List<Map<String, Object>> mapList = couponService.queryCouponExamineList(ofSearch); |
| | | if (mapList.size() > 0){ |
| | | for (Map<String, Object> stringObjectMap : mapList) { |
| | | Object startTime = stringObjectMap.get("startTime"); |
| | | Object endTime = stringObjectMap.get("endTime"); |
| | | stringObjectMap.put("timeValue",startTime + "至"+endTime); |
| | | } |
| | | } |
| | | return mapList; |
| | | } |
| | | |
| | | |
| | | @PostMapping("/base/coupon/couponExamineDetail") |
| | | Map<String, Object> queryCouponExamineDetail(@RequestBody Integer id){ |
| | | Map<String, Object> couponInfo = new HashMap<>(); |
| | | Coupon coupon = couponService.getById(id); |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | if (ToolUtil.isNotEmpty(coupon)){ |
| | | couponInfo.put("",coupon.getId()); |
| | | couponInfo.put("",coupon.getName()); |
| | | couponInfo.put("",coupon.getAuditStatus()); |
| | | couponInfo.put("",coupon.getProvince()); |
| | | couponInfo.put("",coupon.getCity()); |
| | | couponInfo.put("",coupon.getType()); |
| | | couponInfo.put("",coupon.getContent()); |
| | | couponInfo.put("",coupon.getIllustrate()); |
| | | couponInfo.put("",coupon.getDistributionMethod()); |
| | | couponInfo.put("",coupon.getRedemptionMethod()); |
| | | couponInfo.put("integral",coupon.getIntegral()); |
| | | couponInfo.put("cash",coupon.getCash()); |
| | | couponInfo.put("userPopulation",coupon.getUserPopulation()); |
| | | couponInfo.put("quantityIssued",coupon.getQuantityIssued()); |
| | | couponInfo.put("pickUpQuantity",coupon.getPickUpQuantity()); |
| | | String startTime = simpleDateFormat.format(coupon.getStartTime()); |
| | | String endTime = simpleDateFormat.format(coupon.getEndTime()); |
| | | couponInfo.put("timeValue",startTime + "至"+endTime); |
| | | couponInfo.put("useScope",coupon.getUseScope()); |
| | | } |
| | | return couponInfo; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dsh.activity.feignclient.model; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @Data |
| | | public class CouponExamineListSearch { |
| | | |
| | | |
| | | @ApiModelProperty(value = "后台登录用户id") |
| | | private Integer loginId; |
| | | @ApiModelProperty(value = "优惠券名称") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "优惠券类型") |
| | | private Integer type; |
| | | |
| | | @ApiModelProperty(value = "发放方式") |
| | | private Integer distributionMethod; |
| | | |
| | | @ApiModelProperty(value = "用户人群") |
| | | private Integer userPopulation; |
| | | |
| | | @ApiModelProperty(value = "审核状态") |
| | | private Integer auditStatus; |
| | | |
| | | private Page<Map<String, Object>> page; |
| | | |
| | | |
| | | } |
| | |
| | | @Param("state")Integer state, |
| | | @Param("page")Page<Map<String, Object>> page); |
| | | |
| | | List<Map<String, Object>> queryCouponExamineList(@Param("name")String name, |
| | | @Param("type")Integer type, |
| | | @Param("userPopulation") Integer userPopulation, |
| | | @Param("distributionMethod")Integer distributionMethod, |
| | | @Param("auditStatus")Integer auditStatus, |
| | | @Param("page")Page<Map<String, Object>> page); |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.dsh.activity.entity.Coupon; |
| | | import com.dsh.activity.feignclient.model.CouponExamineListSearch; |
| | | import com.dsh.activity.feignclient.model.CouponListOfSearch; |
| | | import com.dsh.activity.model.CouponListVo; |
| | | |
| | |
| | | |
| | | List<Map<String, Object>> queryCouponListOfSearch(CouponListOfSearch ofSearch); |
| | | |
| | | List<Map<String, Object>> queryCouponExamineList(CouponExamineListSearch ofSearch); |
| | | |
| | | } |
| | |
| | | import com.dsh.activity.feignclient.account.StudentClient; |
| | | import com.dsh.activity.feignclient.account.model.AppUser; |
| | | import com.dsh.activity.feignclient.account.model.Student; |
| | | import com.dsh.activity.feignclient.model.CouponExamineListSearch; |
| | | import com.dsh.activity.feignclient.model.CouponListOfSearch; |
| | | import com.dsh.activity.mapper.CouponMapper; |
| | | import com.dsh.activity.model.CouponListVo; |
| | |
| | | return this.baseMapper.queryCouponListOfSearch(ofSearch.getName(),ofSearch.getType(),ofSearch.getDistributionMethod(),ofSearch.getUserPopulation(),ofSearch.getStatus(),ofSearch.getState(),ofSearch.getPage()); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> queryCouponExamineList(CouponExamineListSearch ofSearch) { |
| | | return this.baseMapper.queryCouponExamineList(ofSearch.getName(),ofSearch.getType(),ofSearch.getUserPopulation(),ofSearch.getDistributionMethod(),ofSearch.getAuditStatus(),ofSearch.getPage()); |
| | | } |
| | | |
| | | } |
| | |
| | | `status`, |
| | | state |
| | | from t_coupon |
| | | where 1 = 1SELECT id, |
| | | `name`, |
| | | useScope, |
| | | `type`, |
| | | distributionMethod, |
| | | date_format(startTime ,'%Y-%m-%d') as startTime, |
| | | date_format(endTime ,'%Y-%m-%d') as endTime, |
| | | userPopulation, |
| | | quantityIssued, |
| | | pickUpQuantity, |
| | | `status`, |
| | | state |
| | | from t_coupon |
| | | where 1 = 1 |
| | | <if test="name != null"> |
| | | and `name` like concat('%', #{}, '%') |
| | | and `name` like concat('%', #{name}, '%') |
| | | </if> |
| | | <if test="type != null"> |
| | | and type = #{type} |
| | |
| | | </if> |
| | | order by insertTime desc |
| | | </select> |
| | | <select id="queryCouponExamineList" resultType="java.util.Map"> |
| | | SELECT id, |
| | | `name`, |
| | | useScope, |
| | | `type`, |
| | | distributionMethod, |
| | | date_format(startTime ,'%Y-%m-%d') as startTime, |
| | | date_format(endTime ,'%Y-%m-%d') as endTime, |
| | | userPopulation, |
| | | quantityIssued, |
| | | pickUpQuantity, |
| | | auditStatus |
| | | from t_coupon |
| | | where auditStatus != 2 |
| | | <if test="name != null"> |
| | | and `name` like concat('%', #{name}, '%') |
| | | </if> |
| | | <if test="type != null"> |
| | | and type = #{type} |
| | | </if> |
| | | <if test="distributionMethod != null"> |
| | | and distributionMethod = #{distributionMethod} |
| | | </if> |
| | | <if test="userPopulation != null"> |
| | | and userPopulation = #{userPopulation} |
| | | </if> |
| | | <if test="auditStatus != null"> |
| | | and auditStatus = #{auditStatus} |
| | | </if> |
| | | order by insertTime desc |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
| | |
| | | import com.dsh.competition.entity.Participant; |
| | | import com.dsh.competition.entity.PaymentCompetition; |
| | | import com.dsh.competition.entity.UserCompetition; |
| | | import com.dsh.competition.feignclient.model.GetPeopleQuery; |
| | | import com.dsh.competition.feignclient.model.GetStuSourseList; |
| | | import com.dsh.competition.feignclient.model.ListQuery; |
| | | import com.dsh.competition.feignclient.model.PurchaseRecordVo; |
| | | import com.dsh.competition.feignclient.model.*; |
| | | import com.dsh.competition.model.CompetitionInfo; |
| | | import com.dsh.competition.model.CompetitionListVo; |
| | | import com.dsh.competition.model.PaymentCompetitionVo; |
| | |
| | | |
| | | |
| | | @PostMapping("/base/competition/getPayedCompetitions") |
| | | public List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody Integer appUserId){ |
| | | public List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody BillingDataRequestVo requestVo){ |
| | | List<Integer> integers = new ArrayList<>(); |
| | | integers.add(1); |
| | | integers.add(2); |
| | | return paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>() |
| | | .in("payType",integers) |
| | | .eq("appUserId",appUserId) |
| | | .eq("payStatus",2)); |
| | | .eq("appUserId",requestVo.getAppUserId()) |
| | | .eq("payStatus",2) |
| | | .between("payTime",requestVo.getMonthStart(),requestVo.getMonthEnd())); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/base/competition/getCancelOrderOfUserPay") |
| | | public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody Integer appUserId){ |
| | | public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody BillingDataRequestVo requestVo){ |
| | | List<Integer> integers = new ArrayList<>(); |
| | | integers.add(1); |
| | | integers.add(2); |
| | | return paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>() |
| | | .in("payType",integers) |
| | | .eq("appUserId",appUserId) |
| | | .eq("payStatus",3)); |
| | | .eq("appUserId",requestVo.getAppUserId()) |
| | | .eq("payStatus",3) |
| | | .between("refundTime",requestVo.getMonthStart(),requestVo.getMonthEnd())); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | |
| | | import com.dsh.competition.entity.PaymentCompetition; |
| | | import com.dsh.competition.feignclient.model.BillingDataRequestVo; |
| | | import com.dsh.competition.feignclient.model.GetStuSourseList; |
| | | import com.dsh.competition.feignclient.model.PurchaseRecordVo; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | |
| | | public List<PurchaseRecordVo> getStuSourseList(@RequestBody GetStuSourseList sourseList); |
| | | |
| | | @PostMapping("/base/competition/getPayedCompetitions") |
| | | List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody Integer appUserId); |
| | | List<PaymentCompetition> getAllCompetitionPayRecord(@RequestBody BillingDataRequestVo requestVo); |
| | | |
| | | @PostMapping("/base/competition/getCancelOrderOfUserPay") |
| | | public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody Integer appUserId); |
| | | public List<PaymentCompetition> getCancelOrderOfUserPayRecord(@RequestBody BillingDataRequestVo requestVo); |
| | | |
| | | @PostMapping("/base/competition/getPlayPaiFGoldPayRecord") |
| | | List<PaymentCompetition> getPlayPaiFGoldPayRecord(@RequestBody Integer appUserId); |
New file |
| | |
| | | package com.dsh.competition.feignclient.model; |
| | | |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | public class BillingDataRequestVo { |
| | | |
| | | @ApiModelProperty(value = "开始时间") |
| | | private Date monthStart = null; |
| | | |
| | | @ApiModelProperty(value = "结束时间时间") |
| | | private Date monthEnd = null; |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Integer appUserId; |
| | | |
| | | } |
| | |
| | | * @param stuId 学员id |
| | | * @return 课包列表 |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/coursePack/queryPayment") |
| | | public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId){ |
| | | Integer userIdFormRedis = null; |
| | |
| | | * |
| | | * 获取发布的 课包列表 |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/coursePack/storeOfCourse") |
| | | public List<CourseOfStoreVo> getStuCourseWithStores(@RequestBody WeeksOfCourseRest courseRest){ |
| | | List<CourseOfStoreVo> course = new ArrayList<>(); |
| | |
| | | } |
| | | |
| | | @PostMapping("/base/coursePack/allAmountPayRecordOfUser") |
| | | public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody Integer appUserId){ |
| | | public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody BillingDataRequestVo billingDataRequestVo){ |
| | | return packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() |
| | | .eq("appUserId",appUserId) |
| | | .eq("appUserId",billingDataRequestVo.getAppUserId()) |
| | | .notIn("payType",3) |
| | | .eq("payStatus",2) |
| | | .eq("state",1)); |
| | | .eq("state",1) |
| | | .between("insertTime",billingDataRequestVo.getMonthStart(),billingDataRequestVo.getMonthEnd())); |
| | | } |
| | | |
| | | |
| | |
| | | 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; |
| | |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Accessors(chain = true) |
| | | @TableName("t_course") |
| | | public class TCourse { |
| | | public class TCourse extends Model<TCourse>{ |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | | */ |
| | |
| | | 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; |
| | |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Accessors(chain = true) |
| | | @TableName("t_course_package") |
| | | public class TCoursePackage { |
| | | public class TCoursePackage extends Model<TCoursePackage>{ |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键 |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.extension.activerecord.Model; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Accessors(chain = true) |
| | | @TableName("t_course_package_discount") |
| | | public class TCoursePackageDiscount { |
| | | public class TCoursePackageDiscount extends Model<TCoursePackageDiscount>{ |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.extension.activerecord.Model; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Accessors(chain = true) |
| | | @TableName("t_course_package_payment") |
| | | public class TCoursePackagePayment { |
| | | public class TCoursePackagePayment extends Model<TCoursePackagePayment>{ |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.extension.activerecord.Model; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Accessors(chain = true) |
| | | @TableName("t_course_package_type") |
| | | public class TCoursePackageType { |
| | | public class TCoursePackageType extends Model<TCoursePackageType>{ |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | |
| | | public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment); |
| | | |
| | | @PostMapping("/base/coursePack/allAmountPayRecordOfUser") |
| | | public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody Integer appUserId); |
| | | public List<TCoursePackagePayment> getAmountPayRecord(@RequestBody BillingDataRequestVo appUserId); |
| | | |
| | | @PostMapping("/base/coursePack/obtainStudentClassDetails") |
| | | List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody Integer stuId); |
New file |
| | |
| | | package com.dsh.course.feignclient.model; |
| | | |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | public class BillingDataRequestVo { |
| | | |
| | | @ApiModelProperty(value = "开始时间") |
| | | private Date monthStart = null; |
| | | |
| | | @ApiModelProperty(value = "结束时间时间") |
| | | private Date monthEnd = null; |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Integer appUserId; |
| | | |
| | | } |
| | |
| | | package com.dsh.course.feignClient.activity; |
| | | |
| | | |
| | | import com.dsh.course.feignClient.activity.model.CouponExamineListSearch; |
| | | import com.dsh.course.feignClient.activity.model.CouponListOfSearch; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | @PostMapping("/base/coupon/queryCouponListSearch") |
| | | List<Map<String,Object>> getCouponListOfSearch(@RequestBody CouponListOfSearch ofSearch); |
| | | |
| | | |
| | | @PostMapping("/base/coupon/couponExamineListSearch") |
| | | List<Map<String,Object>> getCouponExamineListOfSearch(@RequestBody CouponExamineListSearch ofSearch); |
| | | |
| | | |
| | | @PostMapping("/base/coupon/couponExamineDetail") |
| | | Map<String, Object> queryCouponExamineDetail(@RequestBody Integer id); |
| | | |
| | | } |
New file |
| | |
| | | package com.dsh.course.feignClient.activity.model; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @Data |
| | | public class CouponExamineListSearch { |
| | | |
| | | |
| | | @ApiModelProperty(value = "后台登录用户id") |
| | | private Integer loginId; |
| | | @ApiModelProperty(value = "优惠券名称") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "优惠券类型") |
| | | private Integer type; |
| | | |
| | | @ApiModelProperty(value = "发放方式") |
| | | private Integer distributionMethod; |
| | | |
| | | @ApiModelProperty(value = "用户人群") |
| | | private Integer userPopulation; |
| | | |
| | | @ApiModelProperty(value = "审核状态") |
| | | private Integer auditStatus; |
| | | |
| | | private Page<Map<String, Object>> page; |
| | | |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | // TODO: 2023/7/31 优惠券管理 |
| | | } |
| | |
| | | package com.dsh.guns.modular.system.controller.code; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.dsh.course.feignClient.activity.CouponClient; |
| | | import com.dsh.course.feignClient.activity.model.CouponExamineListSearch; |
| | | import com.dsh.course.feignClient.activity.model.CouponListOfSearch; |
| | | import com.dsh.guns.core.common.constant.factory.PageFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 优惠券审核 控制器 |
| | |
| | | |
| | | private String PREFIX = "/system/tCouponExamine/"; |
| | | |
| | | @Resource |
| | | private CouponClient client; |
| | | |
| | | /** |
| | | * 优惠券审核列表页 |
| | | */ |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取 优惠券审核列表 |
| | | */ |
| | | @RequestMapping(value = "/list") |
| | | @ResponseBody |
| | | public Object listOfDatas(String name, Integer type, Integer distributionMethod , Integer userPopulation, Integer auditStatus) { |
| | | Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); |
| | | CouponExamineListSearch ofSearch = new CouponExamineListSearch(); |
| | | ofSearch.setPage(page); |
| | | ofSearch.setName(name); |
| | | ofSearch.setType(type); |
| | | ofSearch.setDistributionMethod(distributionMethod); |
| | | ofSearch.setUserPopulation(userPopulation); |
| | | ofSearch.setAuditStatus(auditStatus); |
| | | List<Map<String, Object>> couponExamineListOfSearch = client.getCouponExamineListOfSearch(ofSearch); |
| | | if (couponExamineListOfSearch.size() > 0){ |
| | | for (Map<String, Object> examineListOfSearch : couponExamineListOfSearch) { |
| | | examineListOfSearch.put("province",""); |
| | | examineListOfSearch.put("city",""); |
| | | examineListOfSearch.put("account",""); |
| | | } |
| | | } |
| | | return couponExamineListOfSearch; |
| | | } |
| | | |
| | | /** |
| | | * 获取 优惠券审核详情 |
| | | */ |
| | | @RequestMapping(value = "/couponOfDetail/{id}") |
| | | @ResponseBody |
| | | public Object detailOfCoupon(@PathVariable Integer id){ |
| | | Map<String,Object> couponMap = client.queryCouponExamineDetail(id); |
| | | return null;// TODO: 2023/7/31 |
| | | } |
| | | |
| | | } |
| | |
| | | <label class="col-sm-1" style="width: 16%;margin-top: 7px">指定城市</label> |
| | | <input class="col-sm-1 control-label" name="company" onclick="scopeOfApplication3()" type="radio" |
| | | value="1" checked style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px"/> |
| | | <label class="col-sm-1" style="width: 25%;margin-top: -16px">指定门店</label> |
| | | <label class="col-sm-1" style="width: 16%;margin-top: -16px;margin-left: 8%">指定门店</label> |
| | | </div> |
| | | </div> |
| | | </div> |
New file |
| | |
| | | @layout("/common/_container.html"){ |
| | | <div class="row"> |
| | | <div class="col-sm-12"> |
| | | <div class="ibox float-e-margins"> |
| | | <div class="ibox-title"> |
| | | <h5>优惠券审核</h5> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <div class="row row-lg"> |
| | | <div class="col-sm-12"> |
| | | <div class="row"> |
| | | <div class="col-sm-3"> |
| | | <#NameCon id="name" name="优惠券名称" /> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#SelectCon id="type" name="优惠券类型" > |
| | | <option value="">全部</option> |
| | | <option value="1">满减券</option> |
| | | <option value="2">折扣券</option> |
| | | <option value="3">体验券</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#SelectCon id="distributionMethod" name="发放方式" > |
| | | <option value="">全部</option> |
| | | <option value="1">积分购买</option> |
| | | <option value="2">注册赠送</option> |
| | | <option value="3">自动发券</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#SelectCon id="userPopulation" name="用户人群" > |
| | | <option value="">全部</option> |
| | | <option value="1">全部用户</option> |
| | | <option value="2">年度会员</option> |
| | | <option value="3">已有学员用户</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#SelectCon id="auditStatus" name="审核状态" > |
| | | <option value="">全部</option> |
| | | <option value="1">待审核</option> |
| | | <option value="2">未通过</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#button name="搜索" icon="fa-search" clickFun="TCouponExamine.search()"/> |
| | | <#button name="重置" icon="fa-trash" clickFun="TCouponExamine.resetSearch()"/> |
| | | </div> |
| | | </div> |
| | | <div class="hidden-xs" id="TCouponExamineExamineTableToolbar" role="group"> |
| | | <#button name="审核" icon="fa-plus" clickFun="TCouponExamine.openAdd()"/> |
| | | <#button name="查看详情" icon="fa-remove" clickFun="TCouponExamine.openDetail()" space="true"/> |
| | | </div> |
| | | <#table id="TCouponExamineTable"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script src="${ctxPath}/modular/system/tCouponExamine/TCouponExamine.js"></script> |
| | | @} |
New file |
| | |
| | | /** |
| | | * 管理初始化 |
| | | */ |
| | | var TCouponExamine = { |
| | | id: "TCouponExamineTable", //表格id |
| | | seItem: null, //选中的条目 |
| | | table: null, |
| | | layerIndex: -1 |
| | | }; |
| | | |
| | | /** |
| | | * 初始化表格的列 |
| | | */ |
| | | TCouponExamine.initColumn = function () { |
| | | return [ |
| | | {field: 'selectItem', radio: true}, |
| | | {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'}, |
| | | {title: '发布省', field: 'province', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '发布城市', field: 'city', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '所属账号', field: 'account', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '优惠券名称', field: 'name', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '适用范围', field: 'useScope', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '优惠券类型', field: 'type', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row, index) { |
| | | return {1: "满减券", 2: "代金券", 3: "体验券"}[value] |
| | | }}, |
| | | {title: '发放方式', field: 'distributionMethod', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row, index) { |
| | | return {1: "积分购买", 2: "注册赠送", 3: "自动发券"}[value] |
| | | }}, |
| | | {title: '有效期', field: 'timeValue', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '用户人群', field: 'userPopulation', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row, index) { |
| | | return {1: "全部用户", 2: "年度会员", 3: "已有学员用户"}[value] |
| | | }}, |
| | | {title: '发放数量', field: 'quantityIssued', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '限领数量', field: 'pickUpQuantity', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '审核状态', field: 'auditStatus', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row, index) { |
| | | return {1: "上架", 2: "下架"}[value] |
| | | }} |
| | | ]; |
| | | }; |
| | | |
| | | /** |
| | | * 检查是否选中 |
| | | */ |
| | | TCouponExamine.check = function () { |
| | | var selected = $('#' + this.id).bootstrapTable('getSelections'); |
| | | if(selected.length == 0){ |
| | | Feng.info("请先选中表格中的某一记录!"); |
| | | return false; |
| | | }else{ |
| | | TCouponExamine.seItem = selected[0]; |
| | | return true; |
| | | } |
| | | }; |
| | | |
| | | |
| | | /** |
| | | * 打开查看详情 |
| | | */ |
| | | TCouponExamine.openDetail = function () { |
| | | if (this.check()) { |
| | | var index = layer.open({ |
| | | type: 2, |
| | | title: '详情', |
| | | area: ['800px', '420px'], //宽高 |
| | | fix: false, //不固定 |
| | | maxmin: true, |
| | | content: Feng.ctxPath + '/tCouponExamine/couponOfDetail/' + TCouponExamine.seItem.id |
| | | }); |
| | | this.layerIndex = index; |
| | | } |
| | | }; |
| | | |
| | | |
| | | /** |
| | | * 打开审核页面 |
| | | */ |
| | | TCouponExamine.openCollectionRecord = function () { |
| | | if (this.check()) { |
| | | var index = layer.open({ |
| | | type: 2, |
| | | title: '详情', |
| | | area: ['800px', '420px'], //宽高 |
| | | fix: false, //不固定 |
| | | maxmin: true, |
| | | content: Feng.ctxPath + '/tCouponExamine/coupon_examine_page/' + TCouponExamine.seItem.id |
| | | }); |
| | | this.layerIndex = index; |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 查询列表 |
| | | */ |
| | | TCouponExamine.search = function () { |
| | | var queryData = {}; |
| | | queryData['name'] = $("#name").val(); |
| | | queryData['type'] = $("#type").val(); |
| | | queryData['distributionMethod'] = $("#distributionMethod").val(); |
| | | queryData['userPopulation'] = $("#userPopulation").val(); |
| | | queryData['auditStatus'] = $("#auditStatus").val(); |
| | | TCouponExamine.table.refresh({query: queryData}); |
| | | }; |
| | | |
| | | |
| | | /** |
| | | * 重置搜索 |
| | | */ |
| | | TCouponExamine.resetSearch = function () { |
| | | $("#name").val(''); |
| | | $("#type").val(''); |
| | | $("#distributionMethod").val(''); |
| | | $("#userPopulation").val(''); |
| | | $("#auditStatus").val(''); |
| | | TCouponExamine.search(); |
| | | }; |
| | | |
| | | $(function () { |
| | | var defaultColunms = TCouponExamine.initColumn(); |
| | | var table = new BSTable(TCouponExamine.id, "/tCouponExamine/list", defaultColunms); |
| | | table.setPaginationType("client"); |
| | | TCouponExamine.table = table.init(); |
| | | }); |
| | |
| | | import com.dsh.other.entity.SiteType; |
| | | import com.dsh.other.feignclient.activity.UserCouponClient; |
| | | import com.dsh.other.feignclient.activity.model.UserCoupon; |
| | | import com.dsh.other.feignclient.model.BillingDataRequestVo; |
| | | import com.dsh.other.feignclient.model.SiteVo; |
| | | import com.dsh.other.model.*; |
| | | import com.dsh.other.service.ISiteBookingService; |
| | |
| | | |
| | | /** |
| | | * 查询所有现金支付的预约记录 |
| | | * @param appUserId |
| | | * @param requestVo |
| | | * @return |
| | | */ |
| | | @PostMapping("/base/site/queryPaymentSiteDetail") |
| | | public List<SiteBooking> getAllSiteBookingList(@RequestBody Integer appUserId){ |
| | | public List<SiteBooking> getAllSiteBookingList(@RequestBody BillingDataRequestVo requestVo){ |
| | | ArrayList<Integer> integers = new ArrayList<>(); |
| | | integers.add(1); |
| | | integers.add(2); |
| | |
| | | return siteBookingService.list(new QueryWrapper<SiteBooking>() |
| | | .in("status",integers) |
| | | .ne("payType",3) |
| | | .eq("appUserId",appUserId)); |
| | | .eq("appUserId",requestVo.getAppUserId()) |
| | | .between("payTime",requestVo.getMonthStart(),requestVo.getMonthEnd())); |
| | | } |
| | | |
| | | /** |
| | |
| | | package com.dsh.other.feignclient; |
| | | |
| | | import com.dsh.other.entity.SiteBooking; |
| | | import com.dsh.other.feignclient.model.BillingDataRequestVo; |
| | | import com.dsh.other.feignclient.model.SiteVo; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | public interface SiteClient { |
| | | |
| | | @PostMapping("/base/site/queryPaymentSiteDetail") |
| | | List<SiteBooking> getAllSiteBookingList(@RequestBody Integer appUserId); |
| | | List<SiteBooking> getAllSiteBookingList(@RequestBody BillingDataRequestVo requestVo); |
| | | |
| | | @PostMapping("/base/site/queryPlaypaiGoldSiteDetail") |
| | | List<SiteBooking> wanpaiGoldSiteBookingList(@RequestBody Integer appUserId); |
New file |
| | |
| | | package com.dsh.other.feignclient.model; |
| | | |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | public class BillingDataRequestVo { |
| | | |
| | | @ApiModelProperty(value = "开始时间") |
| | | private Date monthStart = null; |
| | | |
| | | @ApiModelProperty(value = "结束时间时间") |
| | | private Date monthEnd = null; |
| | | |
| | | @ApiModelProperty(value = "用户id") |
| | | private Integer appUserId; |
| | | |
| | | } |