New file |
| | |
| | | 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; |
| | | } |
| | | } |