package com.dsh.guns.modular.system.controller.code; import com.dsh.course.feignClient.account.AppUserClient; import com.dsh.course.feignClient.account.VipPaymentClient; import com.dsh.course.feignClient.account.model.QueryByNamePhone; import com.dsh.course.feignClient.account.model.TAppUser; import com.dsh.course.feignClient.activity.CouponClient; import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.core.base.tips.SuccessTip; import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.model.dto.VipPaymentDto; import com.dsh.guns.modular.system.model.dto.VipRefundDto; import com.dsh.guns.modular.system.model.vo.VipPaymentListVO; import com.dsh.guns.modular.system.service.*; import com.dsh.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; /** * @author zhibing.pu * @Date 2023/8/1 14:02 */ @Controller @RequestMapping("/vipDetail") public class TVipDetailController extends BaseController { @Autowired private IVipService vipService; @Autowired private CouponClient couponClient; @Autowired private IStoreService storeService; @Autowired private AppUserClient appUserClient; @Autowired private VipPaymentClient vipPaymentClient; @Autowired private ITSiteService siteService; @Autowired private TOperatorService operatorService; private String PREFIX = "/system/vipPayment/"; /** * 跳转到优惠券管理首页 */ @RequestMapping("") public String index(Model model) { return PREFIX + "vip_payment.html"; } /** * 获取 会员权益使用明细列表 */ @RequestMapping(value = "/list") @ResponseBody public List list(String appUserName , String phone, String vipName , Integer isRefund , String time ) { VipPaymentDto vipPaymentDto = new VipPaymentDto(); if (StringUtils.hasLength(vipName)){ List vipIds = vipService.lambdaQuery().like(Vip::getVipName, vipName) .list().stream().map(Vip::getId).collect(Collectors.toList()); if (vipIds.isEmpty()){ vipIds.add(-1); } vipPaymentDto.setVipIds(vipIds); } if (StringUtils.hasLength(phone)){ QueryByNamePhone queryByNamePhone = new QueryByNamePhone(); queryByNamePhone.setPhone( phone); List userIds = appUserClient.queryByNamePhone(queryByNamePhone).stream().map(TAppUser::getId) .collect(Collectors.toList()); vipPaymentDto.setUserIds(userIds); } if (StringUtils.hasLength(appUserName)){ QueryByNamePhone queryByNamePhone = new QueryByNamePhone(); queryByNamePhone.setName( appUserName); List userIds = appUserClient.queryByNamePhone(queryByNamePhone).stream().map(TAppUser::getId) .collect(Collectors.toList()); if (vipPaymentDto.getUserIds()!=null){ // 取交集 vipPaymentDto.setUserIds(vipPaymentDto.getUserIds().stream().filter(userIds::contains).collect(Collectors.toList())); }else{ vipPaymentDto.setUserIds(userIds); } } if (StringUtils.hasLength(appUserName)|| StringUtils.hasLength(phone)){ if (vipPaymentDto.getUserIds().isEmpty()){ List userIds = vipPaymentDto.getUserIds(); userIds.add(-1); vipPaymentDto.setUserIds(userIds); } } vipPaymentDto.setIsRefund(isRefund); if (StringUtils.hasLength(time)){ String stareTime = null; String endTime = null; stareTime = time.split(" - ")[0] + " 00:00:00"; endTime = time.split(" - ")[1] + " 23:59:59"; vipPaymentDto.setStartTime(stareTime); vipPaymentDto.setEndTime(endTime); } QueryByNamePhone queryByNamePhone = new QueryByNamePhone(); List tAppUsers = appUserClient.queryByNamePhone(queryByNamePhone); List vipList = vipService.list(); List res =vipPaymentClient.vipPayment(vipPaymentDto); for (VipPaymentListVO re : res) { Vip vip = vipList.stream().filter(e -> e.getId().equals(re.getVipId())).findFirst().orElse(null); if (vip!=null){ re.setVipName(vip.getVipName()); Integer timeType = vip.getTimeType(); Integer time1 = vip.getTime(); switch (timeType){ case 1: re.setVipTime(time1 + "天"); break; case 2: re.setVipTime(time1 + "月"); break; case 3: re.setVipTime(time1 + "年"); break; } } re.setAmountValue("¥"+re.getAmount().toString()); TAppUser appUser = tAppUsers.stream().filter(e -> e.getId().equals(re.getAppUserId())).findFirst().orElse(null); if (appUser!=null){ re.setAppUserName(appUser.getName()); re.setAppUserPhone(appUser.getName()); } } return res; } /** * 退费 */ @RequestMapping(value = "/refund") @ResponseBody public Object list(@RequestBody VipRefundDto vipRefundDto) { String code =vipPaymentClient.refund(vipRefundDto); if (code!=null&& code.equals("200")){ return ResultUtil.success(); }else{ return ResultUtil.error("退费失败"); } } }