From 8f37a2de432a8d4d77f94dcf45d0b86ce3006ee2 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 18 八月 2025 14:47:35 +0800 Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/PlayPai into 2.0 --- cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java | 6 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java | 18 +++ cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java | 9 + cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 10 + cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java | 4 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java | 20 ++- cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java | 6 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java | 236 +++++++++++++++++++++++++++++++++++++++ cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java | 2 9 files changed, 294 insertions(+), 17 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 228d6a4..23c9176 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 @@ -474,7 +474,14 @@ VipPaymentVO res = new VipPaymentVO(); res.setHeadImg(appUser.getHeadImg()); res.setName(appUser.getName()); - res.setIsVip(appUser.getIsVip()); + if (appUser.getVipEndTime()==null){ + res.setIsVip(0); + }else if (appUser.getVipEndTime().before(new Date())){ + res.setIsVip(0); + }else{ + res.setIsVip(1); + } + appUserService.updateById(appUser); List<Vip> vips = vipClient.listAll(); res.setVipList(vips); } catch (Exception e) { diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java index eba6005..4f49cfb 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java @@ -22,7 +22,7 @@ @ApiModelProperty(value = "现金") private BigDecimal cash; - @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)") + @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金 3=会员赠送)") private Integer exchangeType; @ApiModelProperty(value = "有效期开始时间") @@ -37,11 +37,15 @@ @ApiModelProperty(value = "商品类型 1实物 2课包 3门票 4优惠券") private Integer goodType; + private Integer userId; private List<Integer> rid; private List<Integer> sid; + @ApiModelProperty(value = "当exchangeType=3会员赠送时存储1 门票二维码格式内容新增该字段 用于标明该门票为会员赠送" + + ",使用时存储门票记录") + private Integer isVipCode; @ApiModelProperty(value = "1日卡 2月卡 3季卡 4年卡") private Integer cardType; diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java index de91dd1..96ea547 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java @@ -1038,6 +1038,7 @@ } + detailsResponse.setIsVipCode(0); responses.add(detailsResponse); } detailsVo.setDetailsResponses(responses); @@ -1053,8 +1054,7 @@ detailsResponse.setGoodName(vipDetail.getTicketName()); detailsResponse.setStartTime(simpleDateFormat.format(vipDetail.getStartTime())); detailsResponse.setEndTime(simpleDateFormat.format(vipDetail.getEndTime())); - - + detailsResponse.setIsVipCode(1); detailsResponse.setUseStatus(vipDetail.getStatus()); detailsResponse.setGoodType(3); // 表明是会员赠送的门票 @@ -1084,13 +1084,15 @@ detailsResponse.setIntegral(c.getIntegral().intValue()); detailsResponse.setCash(c.getCash()); } + if (userCoupon.getIsVipGrant()!=null && userCoupon.getIsVipGrant()==1){ + detailsResponse.setExchangeType(3); + } detailsResponse.setStartTime(simpleDateFormat.format(c.getStartTime())); detailsResponse.setEndTime(simpleDateFormat.format(c.getEndTime())); detailsResponse.setUseStatus(userCoupon.getStatus() == 1 ? 2 : 1); detailsResponse.setGoodType(4); + detailsResponse.setIsVipCode(0); responses.add(detailsResponse); - - } Comparator<ExchangeDetailsResponse> comparator = Comparator.comparing(ExchangeDetailsResponse::getStartTime).reversed(); Collections.sort(responses, comparator); diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java index b1390ef..81d9384 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java @@ -22,7 +22,7 @@ @ApiModelProperty(value = "现金") private BigDecimal cash; - @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)") + @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金 3=会员赠送)") private Integer exchangeType; @ApiModelProperty(value = "有效期开始时间") @@ -45,6 +45,10 @@ private List<Integer> sid; + @ApiModelProperty(value = "当exchangeType=3会员赠送时存储1 门票二维码格式内容新增该字段 用于标明该门票为会员赠送" + + ",使用时存储门票记录") + private Integer isVipCode; + @ApiModelProperty(value = "1日卡 2月卡 3季卡 4年卡") private Integer cardType; diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java index 07d0245..21b24b2 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java @@ -19,7 +19,7 @@ /** * 体验券名称 */ - @ApiModelProperty("体验券名称 ") + @ApiModelProperty("体验券名称/抵扣券商品名称 ") String experienceName; } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java index a33a3fc..ec7445b 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java @@ -13,8 +13,10 @@ @ApiModelProperty("优惠券名称") private String name; + @ApiModelProperty("商品名称") + private String goodsName; - @ApiModelProperty("优惠券类型(1=满减券,2=代金券,3=体验券)") + @ApiModelProperty("优惠券类型(1=满减券,2=代金券,3=体验券,4=体验券)") private Integer type; @ApiModelProperty("适用范围1全国通用 2指定城市可用 3指定门店可用") diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java index 12804de..dd8e9f2 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java @@ -4,10 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.dsh.activity.entity.Coupon; -import com.dsh.activity.entity.CouponCity; -import com.dsh.activity.entity.CouponStore; -import com.dsh.activity.entity.UserCoupon; +import com.dsh.activity.entity.*; import com.dsh.activity.feignclient.account.AppUserClient; import com.dsh.activity.feignclient.account.StudentClient; import com.dsh.activity.feignclient.account.model.AppUser; @@ -17,10 +14,7 @@ import com.dsh.activity.feignclient.other.StoreClient; import com.dsh.activity.feignclient.other.model.Site; import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; -import com.dsh.activity.mapper.CouponCityMapper; -import com.dsh.activity.mapper.CouponMapper; -import com.dsh.activity.mapper.CouponStoreMapper; -import com.dsh.activity.mapper.UserCouponMapper; +import com.dsh.activity.mapper.*; import com.dsh.activity.model.ConponJsonRuleModel; import com.dsh.activity.model.CouponListVo; import com.dsh.activity.model.request.CouponPackageReq; @@ -54,6 +48,8 @@ @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; + @Autowired + private PointsMerchandiseMapper pointsMerchandiseMapper; @Resource private AppUserClient appClient; @@ -255,6 +251,14 @@ ruleModel.setDeductionAmount(""); ruleModel.setExperienceName(jsonObject.getString("experienceName")); break; + case 4: +// 抵扣券 + Integer goodsId = coupon.getGoodsId(); + PointsMerchandise pointsMerchandise = pointsMerchandiseMapper.selectById(goodsId); + ruleModel.setConditionalAmount(""); + ruleModel.setDeductionAmount(""); + ruleModel.setExperienceName(pointsMerchandise.getName()); + break; default: break; } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java new file mode 100644 index 0000000..f6db7eb --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java @@ -0,0 +1,236 @@ +package com.dsh.guns.modular.system.controller.code; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.dsh.course.feignClient.account.AppUserClient; +import com.dsh.course.feignClient.account.model.QueryByNamePhone; +import com.dsh.course.feignClient.activity.CouponClient; +import com.dsh.course.feignClient.activity.model.Coupon; +import com.dsh.course.feignClient.activity.model.CouponCity; +import com.dsh.course.feignClient.activity.model.TicketDetailVO; +import com.dsh.guns.core.base.controller.BaseController; +import com.dsh.guns.core.common.constant.factory.PageFactory; +import com.dsh.guns.modular.system.model.*; +import com.dsh.guns.modular.system.service.IProtocolService; +import com.dsh.guns.modular.system.service.IStoreService; +import com.dsh.guns.modular.system.service.IVipService; +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.math.BigDecimal; +import java.text.SimpleDateFormat; +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; + private String PREFIX = "/system/vip/"; + + + /** + * 跳转到优惠券管理首页 + */ + @RequestMapping("") + public String index(Model model) { + + return PREFIX + "vipDetail.html"; + } + + /** + * 获取 会员权益使用明细列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public List<Map<String, Object>> list(String vipName, Integer type + , Integer phone, String storeName + , Integer operatorId, Integer status + , String startTime, String endTime + , Integer useStartTime, Integer useEndTim) { + // 根据会员名查询会员ids + if (StringUtils.hasLength(vipName)){ + List<Integer> vipIds = vipService.lambdaQuery().like(Vip::getVipName, vipName) + .list().stream().map(Vip::getId).collect(Collectors.toList()); + } +// QueryByNamePhone +// appUserClient.listAll() +// Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); +// List<Map<String, Object>> maps = vipService.listOfPage(vipName, status, page); +// for (Map<String, Object> map : maps) { +// Object timeType = map.get("timeType"); +// Object time = map.get("time"); +// Integer timeTypeValue = Integer.valueOf(timeType.toString()); +// Integer timeValue = Integer.valueOf(time.toString()); +// switch (timeTypeValue) { +// case 1: +// map.put("time",timeValue+"天"); +// break; +// case 2: +// map.put("time",timeValue+"月"); +// break; +// case 3: +// map.put("time",timeValue+"年"); +// break; +// } +// } + return null; + } + + // APP查询所有上架的会员卡 + @ResponseBody + @PostMapping("/listAll") + public List<Vip> listAll() { + List<Vip> list = vipService.lambdaQuery().eq(Vip::getStatus, 1).list(); + List<Coupon> coupons = couponClient.queryCouponAll(); + List<CouponCity> couponCityList = couponClient.queryAllCity(); + List<CouponStore> storeList = couponClient.queryAllStore(); + List<TStore> shopList = storeService.list(); + // 封装会员权益 + for (Vip vip : list) { + List<CouponVipResp> couponVipRespList = new ArrayList<>(); + List<TicketVipResp> ticketVipRespList = new ArrayList<>(); + String couponJson = vip.getCouponJson(); + JSONArray couponJsonArray = JSONArray.parseArray(couponJson); + for (Object o : couponJsonArray) { + JSONObject couponJsonObject = (JSONObject) o; + // 优惠券id + Integer id = Integer.valueOf(couponJsonObject.getString("id")); + // 优惠券数量 + Integer value = Integer.valueOf(couponJsonObject.getString("value")); + Coupon coupon = coupons.stream().filter(e -> e.getId().equals(id)).findFirst().orElse(new Coupon()); + CouponVipResp couponVipResp = new CouponVipResp(); + couponVipResp.setId(coupon.getId()); + couponVipResp.setName(coupon.getName()); + couponVipResp.setType(coupon.getType()); + couponVipResp.setUseCondition(coupon.getUseScope()); + couponVipResp.setCount(value); + switch (coupon.getUseScope()) { + case 1: + couponVipResp.setAvailable("全国通用"); + break; + case 2: + couponVipResp.setAvailable("指定城市可用"); + List<CouponCity> couponId = couponCityList.stream().filter(e -> e.getCouponId().equals(id)) + .collect(Collectors.toList()); + StringBuilder stringBuilder = new StringBuilder(); + for (CouponCity couponCity : couponId) { + stringBuilder.append(couponCity.getCity()); + } + couponVipResp.setCityOrStore(String.valueOf(stringBuilder)); + break; + case 3: + couponVipResp.setAvailable("指定门店可用"); + // 门店ids + List<Integer> storeIds = storeList.stream().filter(e -> e.getCouponId().equals(id)) + .map(CouponStore::getStoreId).collect(Collectors.toList()); + StringBuilder storeNames = new StringBuilder(""); + + if (!storeIds.isEmpty()) { + List<TStore> stores = shopList.stream().filter(e -> storeIds.contains(e.getId())).collect(Collectors.toList()); + for (TStore store : stores) { + storeNames.append(store.getName()).append(","); + } + // 去除最后一位 + StringBuilder res = storeNames.deleteCharAt(storeNames.length() - 1); + couponVipResp.setCityOrStore(res.toString()); + } else { + couponVipResp.setCityOrStore("无可用门店"); + } + break; + default: + break; + } + couponVipResp.setInstructionsForUse(coupon.getIllustrate()); + ConponJsonRuleModel ruleModel = new ConponJsonRuleModel(); + JSONObject jsonObject = JSON.parseObject(coupon.getContent()); + switch (coupon.getType()) { + case 1: +// 满减券 + Double num1 = jsonObject.getDouble("conditionalAmount"); + Double num2 = jsonObject.getDouble("deductionAmount"); + ruleModel.setConditionalAmount("满" + num1 + "可用"); + ruleModel.setDeductionAmount("¥ " + num2); + ruleModel.setExperienceName(""); + break; + case 2: +// 代金券 + Double jsonObjectDouble = jsonObject.getDouble("conditionalAmount"); + ruleModel.setConditionalAmount(""); + ruleModel.setDeductionAmount("¥ " + jsonObjectDouble); + ruleModel.setExperienceName(""); + break; + case 3: +// 体验券 + ruleModel.setConditionalAmount(""); + ruleModel.setDeductionAmount(""); + ruleModel.setExperienceName(jsonObject.getString("experienceName")); + break; + default: + break; + } + couponVipResp.setRuleModel(ruleModel); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + couponVipResp.setEffectiveTime(simpleDateFormat.format(coupon.getEndTime())); + couponVipRespList.add(couponVipResp); + } + vip.setCouponList(couponVipRespList); + String ticketJson = vip.getTicketJson(); + JSONArray ticketJsonArray = JSONArray.parseArray(ticketJson); + for (Object o : ticketJsonArray) { + JSONObject ticketJsonObject = (JSONObject) o; + TicketVipResp ticketVipResp = new TicketVipResp(); + ticketVipResp.setName(ticketJsonObject.getString("name")); + ticketVipResp.setTime(ticketJsonObject.getInteger("time")); + ticketVipResp.setCount(ticketJsonObject.getInteger("count")); + ticketVipRespList.add(ticketVipResp); + } + vip.setTicketList(ticketVipRespList); + } + return list; + } + @Autowired + private IProtocolService protocolService; + @ResponseBody + @PostMapping("/getAgreement") + public String getAgreement() { + Protocol one = protocolService.lambdaQuery().eq(Protocol::getType, 6).one(); + if (one==null){ + Protocol protocol = new Protocol(); + protocol.setType(6); + protocol.setContent(""); + protocol.setInsertTime(new Date()); + protocolService.save( protocol); + return ""; + }else{ + return one.getContent(); + + } + } + + @ResponseBody + @PostMapping("/getVipByIds") + public List<Vip> getVipByIds(@RequestBody String ids) { + List<Vip> list = vipService.lambdaQuery().in(Vip::getId, Arrays.asList(ids.split(","))).list(); + return list; + } +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java new file mode 100644 index 0000000..28e7e41 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java @@ -0,0 +1,18 @@ +package com.dsh.guns.modular.system.model.dto; + +import lombok.Data; + +import java.util.List; + +/** + * 会员权益明细 + */ +@Data +public class VipDetailDto { + List<Integer> vipIds; + List<Integer> userIds; + String store; + String site; + Integer type; + Integer id; +} -- Gitblit v1.7.1