| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554 |
- package com.happy.action;
- import com.happy.Model.Booking;
- import com.happy.Model.HotelCoupon;
- import com.happy.Model.HotelCouponStatus;
- import com.happy.Until.DateUtil;
- import com.happy.Until.Func;
- import com.happy.Until.GetHttpParam;
- import com.happy.Until.ResUtil;
- import com.happy.dto.*;
- import com.happy.service.*;
- import com.happy.vo.*;
- import com.opensymphony.xwork2.ActionSupport;
- import net.sf.json.JSONObject;
- import org.apache.struts2.ServletActionContext;
- import org.apache.struts2.interceptor.ServletRequestAware;
- import org.springframework.util.ObjectUtils;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.math.BigDecimal;
- import java.util.Date;
- import java.util.List;
- public class AppHotelCouponAction extends ActionSupport implements ServletRequestAware {
- public HttpServletRequest request;
- public HttpServletResponse response;
- public HttpServletRequest getRequest() {
- return request;
- }
- public void setRequest(HttpServletRequest request) {
- this.request = request;
- }
- @Override
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
- }
- public HttpServletResponse getResponse() {
- return response;
- }
- public void setResponse(HttpServletResponse response) {
- this.response = response;
- }
- @Resource
- HotelCoupomService hotelCoupomService;
- public int page; // 当前页
- public int rows;// 每页显示的行数rows
- public String types; //状态,1,2显示全部,1带金券,2折扣券
- public int getPage() {
- return page;
- }
- public void setPage(int page) {
- this.page = page;
- }
- public int getRows() {
- return rows;
- }
- public void setRows(int rows) {
- this.rows = rows;
- }
- public String getTypes() {
- return types;
- }
- public void setTypes(String types) {
- this.types = types;
- }
- public String hotelIds;
- public String getHotelIds() {
- return hotelIds;
- }
- public void setHotelIds(String hotelIds) {
- this.hotelIds = hotelIds;
- }
- public String userId;
- public int type;
- public String getUserId() {
- return userId;
- }
- public void setUserId(String userId) {
- this.userId = userId;
- }
- public int getType() {
- return type;
- }
- public void setType(int type) {
- this.type = type;
- }
- private String hotelId;
- public String getHotelId() {
- return hotelId;
- }
- public void setHotelId(String hotelId) {
- this.hotelId = hotelId;
- }
- private String complaintId;
- private String bookingId;
- public String getComplaintId() {
- return complaintId;
- }
- public void setComplaintId(String complaintId) {
- this.complaintId = complaintId;
- }
- public String getBookingId() {
- return bookingId;
- }
- public void setBookingId(String bookingId) {
- this.bookingId = bookingId;
- }
- public Double totalPrice;
- public Double getTotalPrice() {
- return totalPrice;
- }
- public void setTotalPrice(Double totalPrice) {
- this.totalPrice = totalPrice;
- }
- @Resource
- BookService bookService;
- @Resource
- HotelCoupomStatusService hotelCoupomStatusService;
- /**
- * 我的卡券
- *
- * @return
- */
- public JSONObject cardCouponPage() {
- JSONObject jsonObject = new JSONObject();
- System.out.println("进入我的卡券接口");
- if (Func.checkNull(types) || Func.checkNull(userId)) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "未传入usersId数据---complaintPage");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- System.out.println("进入我的卡券接口1");
- if (page <= 0 || rows <= 0) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "未传入page,rows数据---evaluatePage");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- System.out.println("进入我的卡券接口2");
- IPage<CardCouponPageVo> iPage = hotelCoupomService.cardCouponPage(types, userId, page, rows);
- System.out.println("进入我的卡券接口3");
- jsonObject.put("code", 200);
- jsonObject.put("success", true);
- jsonObject.put("message", "成功");
- jsonObject.put("page", iPage);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- /**
- * 领券中心
- *
- * @return
- */
- public JSONObject couponCollection() {
- JSONObject jsonObject = new JSONObject();
- if (page <= 0 || rows <= 0||Func.checkNull(userId)) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "未传入page,rows数据---evaluatePage");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- String date = DateUtil.getFormatPaternDate(new Date());
- IPage<CouponCollectionVo> iPage = hotelCoupomService.couponCollection(date, page, rows,userId);
- jsonObject.put("code", 200);
- jsonObject.put("success", true);
- jsonObject.put("message", "成功");
- jsonObject.put("page", iPage);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- /**
- * 指定名宿
- *
- * @return
- */
- public JSONObject designatedHotel() {
- JSONObject jsonObject = new JSONObject();
- if (Func.checkNull(hotelIds)) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "未传入hotelIds数据---designatedHotel");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- //根据id找对应的名字
- DesignatedHotelVo vo = hotelCoupomService.designatedHotel(hotelIds);
- jsonObject.put("code", 200);
- jsonObject.put("success", true);
- jsonObject.put("message", "成功");
- jsonObject.put("data", vo);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- /**
- * 领券
- *
- * @return
- */
- public JSONObject getCoupon() {
- com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
- com.alibaba.fastjson.JSONObject json = GetHttpParam.getHttpParam(request);
- if (json == null) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据---getCoupon");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- HotelCouponStatus hotelCouponStatus = com.alibaba.fastjson.JSONObject.parseObject(json.toString(), HotelCouponStatus.class);
- String complaintId = hotelCouponStatus.getComplaintId();
- if (hotelCouponStatus == null || Func.checkNull(complaintId)) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据---getCoupon");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- // 通过优惠券id判断领券的张数是否大于等于每人限领次数,并且剩余张数不能为0
- Boolean quota = hotelCoupomService.quota(complaintId);
- if (!quota) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "此券领取次数已达上限");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- // 领取优惠券
- int num = hotelCoupomService.coupon(hotelCouponStatus);
- if (num > 0) {
- jsonObject.put("code", 200);
- jsonObject.put("message", "领取成功");
- jsonObject.put("success", true);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- jsonObject.put("message", "未知异常");
- jsonObject.put("success", false);
- jsonObject.put("code", 205);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- /**
- * 可用优惠券
- *
- * @return
- */
- public JSONObject usefulCoupon() {
- JSONObject jsonObject = new JSONObject();
- if (Func.checkNull(hotelId) || Func.checkNull(userId) || totalPrice==null) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据hotelId,userId,totalPrice---usefulCoupon");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- if (page <= 0 || rows <= 0) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "未传入page,rows数据---usefulCoupon");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- IPage<UsefulCouponVo> iPage = hotelCoupomService.usefulCoupon(hotelId, userId, page, rows,totalPrice);
- jsonObject.put("code", 200);
- jsonObject.put("success", true);
- jsonObject.put("message", "成功");
- jsonObject.put("page", iPage);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- /**
- * 使用优惠券
- *
- * @return
- */
- public JSONObject useCoupons() {
- JSONObject jsonObject = new JSONObject();
- com.alibaba.fastjson.JSONObject json = GetHttpParam.getHttpParam(request);
- if (json == null) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据---getCoupon");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- UseCouponsDto dto = com.alibaba.fastjson.JSONObject.parseObject(json.toString(), UseCouponsDto.class);
- if (dto == null) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据---useCoupons");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- String id = dto.getId();
- Double totalPrice = dto.getTotalPrice();
- String complaintId = dto.getComplaintId();
- if (Func.checkNull(complaintId) && totalPrice <= 0 && totalPrice == null && Func.checkNull(id)) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据id,complaintId,bookingId---useCoupons");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- UseCouponsVo useCouponsVo = new UseCouponsVo();
- useCouponsVo.setComplaintId(complaintId);
- useCouponsVo.setId(id);
- // 优惠券
- HotelCoupon hotelCoupon = hotelCoupomService.getById(complaintId);
- // 优惠券状态,1.优惠卷,需看是否满足满减 2.折扣卷,需判断是否大于最大减免金额
- Integer type1 = hotelCoupon.getType();
- // 订单金额
- BigDecimal houseTotalPriceBigDecimal = new BigDecimal(totalPrice);
- useCouponsVo.setCapitalSum(totalPrice);
- if (1 == type1) {
- // 满减金额
- Double meetPrice = hotelCoupon.getMeetPrice();
- BigDecimal meetPriceBigDecimal = new BigDecimal(meetPrice);
- if (meetPrice > totalPrice) {
- BigDecimal subtract = meetPriceBigDecimal.subtract(houseTotalPriceBigDecimal);
- double v = subtract.doubleValue();
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "还差" + v + "元可使用");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- // 减免金额
- Double deductionPrice = hotelCoupon.getDeductionPrice();
- BigDecimal deductionPriceBigDecimal = new BigDecimal(deductionPrice);
- // 实付金额
- BigDecimal subtract = houseTotalPriceBigDecimal.subtract(deductionPriceBigDecimal);
- useCouponsVo.setTypeName("优惠卷");
- useCouponsVo.setHotelCouponName(hotelCoupon.getName());
- useCouponsVo.setDiscountAmount(deductionPrice);
- } else if (2 == type1) {
- // 满减金额
- Double meetPrice = hotelCoupon.getMeetPrice();
- if (meetPrice==null||meetPrice<0) {
- meetPrice=0.0;
- }
- BigDecimal meetPriceBigDecimal = new BigDecimal(meetPrice);
- if (meetPrice > totalPrice) {
- BigDecimal subtract = meetPriceBigDecimal.subtract(houseTotalPriceBigDecimal);
- double v = subtract.doubleValue();
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "还差" + v + "元可使用");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- // 享受的折扣
- Double rebatePrice = hotelCoupon.getRebatePrice();
- BigDecimal rebatePriceBigDecimal = new BigDecimal(rebatePrice/10);
- // 最大减免金额
- Double maxDeduction = hotelCoupon.getMaxDeduction();
- BigDecimal maxDeductionBigDecimal = new BigDecimal(maxDeduction);
- // 折扣后的价格
- BigDecimal bigDecimal = houseTotalPriceBigDecimal.multiply(rebatePriceBigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
- double v = bigDecimal.doubleValue();
- // 减去最大折扣后的价格
- BigDecimal subtract = houseTotalPriceBigDecimal.subtract(maxDeductionBigDecimal);
- double v1 = subtract.doubleValue();
- if (v > v1) {
- BigDecimal subtract1 = houseTotalPriceBigDecimal.subtract(bigDecimal);
- useCouponsVo.setDiscountAmount(subtract1.doubleValue());
- } else if (v < v1) {
- useCouponsVo.setDiscountAmount(maxDeduction);
- }else if (v==v1){
- useCouponsVo.setDiscountAmount(maxDeduction);
- }
- useCouponsVo.setTypeName("折扣卷");
- useCouponsVo.setHotelCouponName(hotelCoupon.getName());
- } else {
- jsonObject.put("message", "未知异常");
- jsonObject.put("success", false);
- jsonObject.put("code", 205);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- jsonObject.put("code", 200);
- jsonObject.put("success", true);
- jsonObject.put("message", "成功");
- jsonObject.put("data", useCouponsVo);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- /**
- * 锁定优惠券
- *
- * @return
- */
- public JSONObject lockCoupon() {
- JSONObject jsonObject = new JSONObject();
- com.alibaba.fastjson.JSONObject json = GetHttpParam.getHttpParam(request);
- if (json == null) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据---getCoupon");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- CancelUseCouponsDto dto = com.alibaba.fastjson.JSONObject.parseObject(json.toString(), CancelUseCouponsDto.class);
- if (dto == null) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少数据---cancelUseCoupons");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- //无优惠券金额
- Double discountAmount = dto.getCapitalSum();
- // 优惠券id
- String complaintId = dto.getComplaintId();
- // 领取的优惠券id
- String id = dto.getId();
- if (discountAmount != null && discountAmount > 0 && Func.checkNull(complaintId) && Func.checkNull(id)) {
- jsonObject.put("code", 400);
- jsonObject.put("success", false);
- jsonObject.put("message", "缺少bookingId,discountAmount,complaintId,id数据---cancelUseCoupons");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- // 优惠券
- HotelCoupon hotelCoupon = hotelCoupomService.getById(complaintId);
- // 领取的优惠
- HotelCouponStatus hotelCouponStatus = hotelCoupomStatusService.getById(id);
- hotelCoupon.setReversedNumber(hotelCoupon.getReversedNumber() + 1);
- hotelCouponStatus.setStatus(2);
- int i = hotelCoupomService.useCoupons( hotelCoupon, hotelCouponStatus);
- if (i > 0) {
- jsonObject.put("code", 200);
- jsonObject.put("success", true);
- jsonObject.put("message", "成功");
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- jsonObject.put("message", "未知异常");
- jsonObject.put("success", false);
- jsonObject.put("code", 205);
- ResUtil.writeJson(ServletActionContext.getResponse(), jsonObject.toString());
- return null;
- }
- }
|