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