无关风月
昨天 ff94903b42fc1616cc139d071d915e271d12422a
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java
@@ -3,19 +3,24 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.account.model.TAppUser;
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.config.UserExt;
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.model.dto.VipDetailDto;
import com.dsh.guns.modular.system.model.dto.VipPaymentDto;
import com.dsh.guns.modular.system.model.vo.VipDetailVO;
import com.dsh.guns.modular.system.model.vo.VipPaymentVO;
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;
@@ -44,7 +49,11 @@
    private IStoreService storeService;
    @Autowired
    private AppUserClient appUserClient;
    private String PREFIX = "/system/vip/";
    @Autowired
    private ITSiteService siteService;
    @Autowired
    private TOperatorService operatorService;
    private String PREFIX = "/system/vipPayment/";
    /**
@@ -52,8 +61,7 @@
     */
    @RequestMapping("")
    public String index(Model model) {
        return PREFIX + "vipDetail.html";
        return PREFIX + "vip_payment.html";
    }
    /**
@@ -61,176 +69,49 @@
     */
    @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
    public List<VipPaymentVO> list(String appUserName
            , String phone, String vipName
            , Integer isRefund
            , String time
            ) {
        VipPaymentDto vipPaymentDto = new VipPaymentDto();
        if (StringUtils.hasLength(vipName)){
            List<Integer> vipIds = vipService.lambdaQuery().like(Vip::getVipName, vipName)
                    .list().stream().map(Vip::getId).collect(Collectors.toList());
            if (vipIds.isEmpty()){
                vipIds.add(-1);
        }
//        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;
//            }
//        }
            vipPaymentDto.setVipIds(vipIds);
        }
        if (StringUtils.hasLength(phone)){
            QueryByNamePhone queryByNamePhone = new QueryByNamePhone();
            queryByNamePhone.setPhone( phone);
            List<Integer> 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<Integer> 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<Integer> userIds = vipPaymentDto.getUserIds();
                userIds.add(-1);
                vipPaymentDto.setUserIds(userIds);
            }
        }
        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;
    }
}