diff --git a/order/src/main/java/com/order/controller/business/OrderCouponController.java b/order/src/main/java/com/order/controller/business/OrderCouponController.java index bde405a..cb3cb98 100644 --- a/order/src/main/java/com/order/controller/business/OrderCouponController.java +++ b/order/src/main/java/com/order/controller/business/OrderCouponController.java @@ -1,16 +1,25 @@ package com.order.controller.business; +import com.alibaba.excel.EasyExcel; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; +import com.hfkj.common.security.UserCenter; import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.config.CommonSysConst; import com.hfkj.entity.BsOrderCoupon; import com.hfkj.model.ResponseData; +import com.hfkj.model.SecUserSessionObject; import com.hfkj.model.order.OrderCouponModel; import com.hfkj.service.coupon.BsOrderCouponNoService; import com.hfkj.service.coupon.BsOrderCouponService; +import com.hfkj.sysenum.SecUserObjectTypeEnum; +import com.hfkj.sysenum.order.OrderChildStatusEnum; +import com.hfkj.sysenum.order.OrderCouponNoStatusEnum; +import com.hfkj.sysenum.order.OrderPayChannelEnum; +import com.hfkj.sysenum.order.OrderPayTypeEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; @@ -22,9 +31,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.File; +import java.util.*; /** * @className: OrderCouponController @@ -41,6 +49,8 @@ public class OrderCouponController { private BsOrderCouponService orderCouponService; @Resource private BsOrderCouponNoService orderCouponNoService; + @Resource + private UserCenter userCenter; @RequestMapping(value="/queryCouNo",method = RequestMethod.GET) @ResponseBody @@ -98,6 +108,12 @@ public class OrderCouponController { @RequestParam(value = "pageSize" , required = true) Integer pageSize) { try { Map param = new HashMap<>(); + SecUserSessionObject userSessionObject = userCenter.getSessionModel(SecUserSessionObject.class); + if (SecUserObjectTypeEnum.type1.getCode() == userSessionObject.getAccount().getObjectType()) { + + } else if (SecUserObjectTypeEnum.type2.getCode() == userSessionObject.getAccount().getObjectType()) { + param.put("merId", userSessionObject.getAccount().getObjectId()); + } param.put("orderNo", orderNo); param.put("userPhone", userPhone); param.put("tradeStatus", tradeStatus); @@ -120,7 +136,7 @@ public class OrderCouponController { @RequestMapping(value="/export",method = RequestMethod.GET) @ResponseBody - @ApiOperation(value = "查询交易订单列表") + @ApiOperation(value = "导出订单") public ResponseData export(@RequestParam(value = "orderNo" , required = false) String orderNo, @RequestParam(value = "userPhone" , required = false) String userPhone, @RequestParam(value = "tradeStatus" , required = false) Integer tradeStatus, @@ -133,6 +149,12 @@ public class OrderCouponController { @RequestParam(value = "createTimeE" , required = false) Long createTimeE) { try { Map param = new HashMap<>(); + SecUserSessionObject userSessionObject = userCenter.getSessionModel(SecUserSessionObject.class); + if (SecUserObjectTypeEnum.type1.getCode() == userSessionObject.getAccount().getObjectType()) { + + } else if (SecUserObjectTypeEnum.type2.getCode() == userSessionObject.getAccount().getObjectType()) { + param.put("merId", userSessionObject.getAccount().getObjectId()); + } param.put("orderNo", orderNo); param.put("userPhone", userPhone); param.put("tradeStatus", tradeStatus); @@ -145,8 +167,36 @@ public class OrderCouponController { param.put("createTimeE", createTimeE); List orderList = orderCouponService.getOrderList(param); + for (OrderCouponModel coupon : orderList) { + if (coupon.getPayChannel() != null) { + coupon.setPayChannel(OrderPayChannelEnum.getData(Integer.valueOf(coupon.getPayChannel())).getName()); + } + if (coupon.getPayType() != null) { + coupon.setPayType(OrderPayTypeEnum.getData(Integer.valueOf(coupon.getPayType())).getName()); + } + coupon.setTradeStatus(OrderChildStatusEnum.getData(Integer.valueOf(coupon.getTradeStatus())).getName()); + coupon.setCouStatus(OrderCouponNoStatusEnum.getData(Integer.valueOf(coupon.getCouStatus())).getName()); + coupon.setExceptionStatus(Boolean.getBoolean(coupon.getExceptionStatus())?"是":"否"); + } - return ResponseMsgUtil.success(orderList); + String fileUrl = CommonSysConst.getSysConfig().getFileUrl() + "/temporary/"; + String pathName = System.currentTimeMillis()+".xlsx"; + File file = new File(fileUrl); + if (!file.exists()) { + file.mkdirs(); + } + //设置第几列开始合并 + int[] mergeColumnIndex = {0,1,2,17}; + //设置第几行开始合并 + int mergeRowIndex = 1; + + EasyExcel.write(fileUrl+pathName) + .head(OrderCouponModel.class) + .sheet("虚拟商品订单") + //.registerWriteHandler(new ExcelFillCellMergeStrategyUtils(mergeRowIndex, mergeColumnIndex)) + .doWrite(orderList); + + return ResponseMsgUtil.success(pathName); } catch (Exception e) { log.error("error!",e); diff --git a/service/src/main/java/com/hfkj/dao/BsOrderCouponMapperExt.java b/service/src/main/java/com/hfkj/dao/BsOrderCouponMapperExt.java index 7054385..f7b5c3e 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderCouponMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderCouponMapperExt.java @@ -43,6 +43,7 @@ public interface BsOrderCouponMapperExt { " bs_order_coupon_no a" + " LEFT JOIN bs_order_coupon b on a.coupon_order_id = b.id" + " WHERE 1 = 1" + + " and b.mer_id = #{param.merId} " + " and b.order_no like concat('%',#{param.orderNo},'%') " + " and b.child_order_no = #{param.orderChildNo} " + " and b.user_phone like concat('%',#{param.userPhone},'%') " + diff --git a/service/src/main/java/com/hfkj/model/order/OrderCouponModel.java b/service/src/main/java/com/hfkj/model/order/OrderCouponModel.java index ea80447..7c34453 100644 --- a/service/src/main/java/com/hfkj/model/order/OrderCouponModel.java +++ b/service/src/main/java/com/hfkj/model/order/OrderCouponModel.java @@ -1,5 +1,7 @@ package com.hfkj.model.order; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; import java.math.BigDecimal; @@ -14,30 +16,104 @@ import java.util.Date; @Data public class OrderCouponModel { + @ColumnWidth(20) + @ExcelProperty("交易单号") public String orderNo; + + @ColumnWidth(15) + @ExcelProperty("商品单号") public String childOrderNo; + + @ColumnWidth(20) + @ExcelProperty("用户手机号") public String userPhone; + + @ColumnWidth(20) + @ExcelProperty("商品key") public String goodsKey; + + @ColumnWidth(30) + @ExcelProperty("商品名称") public String goodsName; + + @ColumnWidth(30) + @ExcelProperty("商品规格") public String goodsSpecsName; + + @ColumnWidth(20) + @ExcelProperty("商品价格") public String goodsPrice; + + @ColumnWidth(20) + @ExcelProperty("购买数量") public String goodsCount; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "订单金额"}) public BigDecimal totalPrice; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "总优惠"}) public BigDecimal totalDeductionPrice; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "优惠券优惠"}) public BigDecimal couponDiscountPrice; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "积分抵扣"}) public BigDecimal integralDiscountPrice; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "实付金额"}) public BigDecimal payRealPrice; - public Integer payChannel; - public Integer payType; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "支付渠道"}) + public String payChannel; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "支付方式"}) + public String payType; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "支付单号"}) public String paySerialNo; - public Integer tradeStatus; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "交易状态"}) + public String tradeStatus; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "创建时间"}) public Date createTime; + + @ColumnWidth(20) + @ExcelProperty({"交易信息", "支付时间"}) public Date payTime; + + @ColumnWidth(35) + @ExcelProperty("渠道订单号") public String channelOrderNo; + + @ColumnWidth(50) + @ExcelProperty("卡密") public String couNo; - public Integer couStatus; + + @ColumnWidth(20) + @ExcelProperty("卡密状态") + public String couStatus; + + @ColumnWidth(20) + @ExcelProperty("过期时间") public Date expireTime; - public String exceptionStatus; + + @ColumnWidth(20) + @ExcelProperty("完成时间") public Date finishTime; + @ColumnWidth(20) + @ExcelProperty("是否异常") + public String exceptionStatus; + } diff --git a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java index f938a79..4a4493f 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java @@ -23,8 +23,7 @@ import com.hfkj.service.goods.GoodsVpdService; import com.hfkj.service.goods.impl.GoodsSpecsServiceImpl; import com.hfkj.service.hlt.HuiLianTongUnionCardService; import com.hfkj.sysenum.GoodsVpdSourceEnum; -import com.hfkj.sysenum.order.OrderChildProductTypeEnum; -import com.hfkj.sysenum.order.OrderCinemaStatusEnum; +import com.hfkj.sysenum.order.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -122,6 +121,7 @@ public class OrderPaySuccessService { JSONObject dataObject = (JSONObject) data; couponNo.setExpireTime(dataObject.getDate("validEndDate")); couponNo.setGoodsVpdSourceCouNo(dataObject.getString("couNo")); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); orderCouponNoService.editData(couponNo); } } @@ -137,6 +137,7 @@ public class OrderPaySuccessService { for (Object data : codeList) { couponNo.setExpireTime(DateUtil.format(couponDetail.getString("expiredDate"), "yyyy-MM-dd")); couponNo.setGoodsVpdSourceCouNo(ChongQingCNPCCouponService.decryptCouponCode(String.valueOf(data))); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); orderCouponNoService.editData(couponNo); } } @@ -153,6 +154,7 @@ public class OrderPaySuccessService { JSONObject object = JSONObject.parseObject(data); couponNo.setExpireTime(vpd.getSalesEndTime()); couponNo.setGoodsVpdSourceCouNo(object.getString("voucher")); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); orderCouponService.editData(orderCoupon); } else if (vpd.getSource() == GoodsVpdSourceEnum.type10.getCode()) { @@ -164,6 +166,7 @@ public class OrderPaySuccessService { JSONObject object = jsonObject.getJSONObject("data"); couponNo.setExpireTime(vpd.getSalesEndTime()); couponNo.setGoodsVpdSourceCouNo(object.getString("couponCode")); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); orderCouponNoService.editData(couponNo); } @@ -183,6 +186,7 @@ public class OrderPaySuccessService { orderCoupon.setPayType(order.getPayType()); orderCoupon.setPaySerialNo(order.getPaySerialNo()); orderCoupon.setPayTime(order.getPayTime()); + orderCoupon.setStatus(OrderChildStatusEnum.status2.getCode()); orderCouponService.editData(orderCoupon); /// 增加销量 diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderAfterSalesApplyServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderAfterSalesApplyServiceImpl.java index bbed271..579556f 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderAfterSalesApplyServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderAfterSalesApplyServiceImpl.java @@ -270,6 +270,10 @@ public class BsOrderAfterSalesApplyServiceImpl implements BsOrderAfterSalesApply BsOrderAfterSalesApplyExample example = new BsOrderAfterSalesApplyExample(); BsOrderAfterSalesApplyExample.Criteria criteria = example.createCriteria(); + if (MapUtils.getLong(param, "merId") != null) { + criteria.andMerIdEqualTo(MapUtils.getLong(param, "merId")); + } + if (MapUtils.getLong(param, "userId") != null) { criteria.andUserIdEqualTo(MapUtils.getLong(param, "userId")); } diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java index 99f8aa4..8b1a796 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java @@ -15,6 +15,7 @@ import com.hfkj.entity.BsOrderRefundExample; import com.hfkj.mer.BsMerPayConfigService; import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderModel; +import com.hfkj.service.hlt.HuiLianTongUnionCardService; import com.hfkj.service.order.BsOrderChildService; import com.hfkj.service.order.BsOrderRefundService; import com.hfkj.service.order.BsOrderService; @@ -36,10 +37,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @className: BsOrderRefundServiceImpl @@ -96,12 +94,25 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService { } } else if (OrderPayChannelEnum.type3.getCode() == orderRefund.getRefundPayChannel()) { - // 商户退款 - JSONObject refundObj = huiftTradeService.thirdPayRefund(orderRefund.getRefundOrderNo(), orderRefund.getRefundPrice(), orderRefund.getOrderNo()); - orderRefund.setRefundSerialNo(refundObj.getString("refundTraceNo")); - orderRefund.setRefundPayChannelOrderNo(refundObj.getString("refundOrderNo")); - return true; - } else { + // 商户退款 + JSONObject refundObj = huiftTradeService.thirdPayRefund(orderRefund.getRefundOrderNo(), orderRefund.getRefundPrice(), orderRefund.getOrderNo()); + orderRefund.setRefundSerialNo(refundObj.getString("refundTraceNo")); + orderRefund.setRefundPayChannelOrderNo(refundObj.getString("refundOrderNo")); + return true; + + } /*else if (OrderPayChannelEnum.type4.getCode() == orderRefund.getRefundPayChannel()) { + // 商户退款 + JSONObject refundObj = HuiLianTongUnionCardService.refund(orderRefund.getRefundOrderNo(), orderRefund.getOrderNo()); + if (!refundObj.getString("respCode").equals("0000")) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, refundObj.getString("respMessage")); + } + JSONObject consumptionResult = HuiLianTongUnionCardService.resolveResponse(refundObj.getString("data")); + if (!(consumptionResult.getBoolean("success") || Objects.equals(consumptionResult.getString("message"), "原交易已撤销,不可再次操作"))) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款失败!"+consumptionResult.getString("message")); + } + orderRefund.setRefundSerialNo(consumptionResult.getString("orderId")); + return true; + }*/ else { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款失败!该支付方式暂不支持退款"); } } catch (BaseException e) { @@ -254,6 +265,10 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService { BsOrderRefundExample example = new BsOrderRefundExample(); BsOrderRefundExample.Criteria criteria = example.createCriteria(); + if (MapUtils.getLong(param, "merId") != null) { + criteria.andMerIdEqualTo(MapUtils.getLong(param, "merId")); + } + if (StringUtils.isNotBlank(MapUtils.getString(param, "userPhone"))) { criteria.andUserPhoneEqualTo(MapUtils.getString(param, "userPhone")); } diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderChildStatusEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderChildStatusEnum.java index 9fa6783..8164eb8 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderChildStatusEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderChildStatusEnum.java @@ -3,6 +3,8 @@ package com.hfkj.sysenum.order; import lombok.Data; import lombok.Getter; +import java.util.Objects; + /** * @className: OrderChildStatusEnum * @author: HuRui @@ -50,4 +52,11 @@ public enum OrderChildStatusEnum { this.code = code; this.name = name; } + + public static OrderChildStatusEnum getData(Integer type) { + for (OrderChildStatusEnum ele : values()) { + if (Objects.equals(type,ele.getCode())) return ele; + } + return null; + } } diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderCouponNoStatusEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderCouponNoStatusEnum.java index 9dd3cb1..da779e1 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderCouponNoStatusEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderCouponNoStatusEnum.java @@ -2,6 +2,8 @@ package com.hfkj.sysenum.order; import lombok.Getter; +import java.util.Objects; + /** * 卡券编号订单状态 * @className: OrderCouponNoStatusEnum @@ -40,4 +42,11 @@ public enum OrderCouponNoStatusEnum { this.code = code; this.name = name; } + + public static OrderCouponNoStatusEnum getData(Integer type) { + for (OrderCouponNoStatusEnum ele : values()) { + if (Objects.equals(type,ele.getCode())) return ele; + } + return null; + } } diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java index d69b487..1bec449 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java @@ -2,6 +2,8 @@ package com.hfkj.sysenum.order; import lombok.Getter; +import java.util.Objects; + /** * 交易支付渠道 * @className: OrderPayModelEnum @@ -36,4 +38,11 @@ public enum OrderPayChannelEnum { this.code = code; this.name = name; } + + public static OrderPayChannelEnum getData(Integer type) { + for (OrderPayChannelEnum ele : values()) { + if (Objects.equals(type,ele.getCode())) return ele; + } + return null; + } } diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java index 0c5b674..56d297d 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java @@ -2,6 +2,8 @@ package com.hfkj.sysenum.order; import lombok.Getter; +import java.util.Objects; + /** * 交易支付类型 * @className: OrderPayModelEnum @@ -36,4 +38,11 @@ public enum OrderPayTypeEnum { this.code = code; this.name = name; } + + public static OrderPayTypeEnum getData(Integer type) { + for (OrderPayTypeEnum ele : values()) { + if (Objects.equals(type,ele.getCode())) return ele; + } + return null; + } }