From 2db9a9bd4a49fb1f66b7a95d632b81f83383cbe7 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 17 May 2021 19:04:29 +0800 Subject: [PATCH 01/29] tt --- .../main/java/com/iformall/utils/AppTest.java | 36 ++- .../com/iformall/enums/EnumTtOrderStatus.java | 42 ++++ .../iformall/service/tt/TtOrderService.java | 5 + .../service/tt/impl/TtOrderServiceImpl.java | 169 ++++++++++++- .../controller/TtOrderController.java | 121 +++++++--- .../controller/TtPayOrderController.java | 223 ------------------ 6 files changed, 321 insertions(+), 275 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumTtOrderStatus.java delete mode 100644 mallinkTTCApi/src/main/java/com/iformall/controller/TtPayOrderController.java diff --git a/mallinkPublicApi/src/main/java/com/iformall/utils/AppTest.java b/mallinkPublicApi/src/main/java/com/iformall/utils/AppTest.java index 43793d06a..8326f2e25 100644 --- a/mallinkPublicApi/src/main/java/com/iformall/utils/AppTest.java +++ b/mallinkPublicApi/src/main/java/com/iformall/utils/AppTest.java @@ -32,6 +32,16 @@ public class AppTest { * 注册并查询用户详细信息 参数 */ // paramMap.put("phone","18872592633"); +// paramMap.put("nickName","周小菇凉"); +// paramMap.put("sex","1"); +// paramMap.put("avatarUrl",""); + + /** + * 查询用户详细信息 参数 + */ +// paramMap.put("phone","18872592633"); + paramMap.put("openId","opvcM5A41kbQF_NY8k3LMDqxCDUM"); + /** * 创建交易信息 参数 @@ -59,15 +69,15 @@ public class AppTest { /** * 积分抵扣 参数 */ - IdWorker idWorker = IdWorker.get(); - paramMap.put("transactionId",String.valueOf(idWorker.nextId()));//***订单Id - paramMap.put("shopNumber","1001");//***门店唯一标识 对应双方平台门店 - paramMap.put("shopName","百丽");//门店名称 - paramMap.put("userNumber","546907706202185728");//***会员Id546907706202185728 - paramMap.put("userPhone","18872592633");//会员手机号 - paramMap.put("timeEnd","2021-04-26 11:43:00");//***积分抵扣时间 - paramMap.put("amount","100");//***付款金额(分) - paramMap.put("summary","我要换东西");//付款摘要 +// IdWorker idWorker = IdWorker.get(); +// paramMap.put("transactionId",String.valueOf(idWorker.nextId()));//***订单Id +// paramMap.put("shopNumber","1001");//***门店唯一标识 对应双方平台门店 +// paramMap.put("shopName","百丽");//门店名称 +// paramMap.put("userNumber","546907706202185728");//***会员Id546907706202185728 +// paramMap.put("userPhone","18872592633");//会员手机号 +// paramMap.put("timeEnd","2021-04-26 11:43:00");//***积分抵扣时间 +// paramMap.put("amount","100");//***付款金额(分) +// paramMap.put("summary","我要换东西");//付款摘要 /** @@ -83,6 +93,12 @@ public class AppTest { */ // String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/userInfo/register", headMap, JSON.toJSONString(paramMap)); + /** + * 注册并查询用户详细信息 接口 + */ + String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/userInfo/get", headMap, JSON.toJSONString(paramMap)); + + /** * 创建交易信息 接口 */ @@ -96,7 +112,7 @@ public class AppTest { /** * 交易退款 接口 */ - String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/thirdCircle/pointDeduction", headMap, JSON.toJSONString(paramMap)); +// String s = HttpUtil.doPost("https://openapitest.malls.iformall.com/api/thirdCircle/pointDeduction", headMap, JSON.toJSONString(paramMap)); System.out.println(s); diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTtOrderStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumTtOrderStatus.java new file mode 100644 index 000000000..dcc78d0ad --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTtOrderStatus.java @@ -0,0 +1,42 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumTtOrderStatus { + + + ORDER_STATUS_PENDING_PAYMENT(0, "待付款"), + ORDER_STATUS_PAYMENT_ING(1,"支付中"), + ORDER_STATUS_PAYMENT_SUCCESS(1, "已支付"), + ORDER_STATUS_OVERTIME_CANCEL(2, "已取消"), + ORDER_STATUS_PENDING_REFUND(3, "待退款"), + ORDER_STATUS_REFUND_SUCCESS(4,"已退款"), + ORDER_STATUS_REFUND_FAILD(5, "退款失败"), + + ; + public static EnumTtOrderStatus getEnum(Integer code) { + for (EnumTtOrderStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumTtOrderStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/tt/TtOrderService.java b/mallinkService/src/main/java/com/iformall/service/tt/TtOrderService.java index 2839d9473..7c65a73b5 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/TtOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/TtOrderService.java @@ -3,6 +3,7 @@ package com.iformall.service.tt; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.dto.OrderSaveDto; +import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtOrder; import com.iformall.enums.EnumPayWay; @@ -24,4 +25,8 @@ public interface TtOrderService { ResultData cancelOrder(Long orderId, Long memberId); TtOrder detail(Long orderId, Long memberId); + + ResultData createPay(TenantEntity tenantEntity,Long orderId, Long memberId, WxAppinfo appinfo); + + ResultData updateOrderStatus(TenantEntity tenantInfo, Long orderId, Long memberId, WxAppinfo cAppInfo); } diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java index 6e11fd0ec..7bae86752 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java @@ -9,9 +9,14 @@ import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCoupon; import com.iformall.domain.po.tt.TtOrder; +import com.iformall.douyin.pay.DouYinPayHelper; +import com.iformall.douyin.pay.orderQuery.OrderQueryResult; +import com.iformall.douyin.pay.preOrder.CreatePreOrderResult; +import com.iformall.douyin.pay.preOrder.DouYinCreatePreOrder; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; +import com.iformall.service.WxAppinfoService; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.tt.TtCouponService; import com.iformall.service.tt.TtOrderService; @@ -28,6 +33,8 @@ public class TtOrderServiceImpl implements TtOrderService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private final Integer time_out = 30*60; + @Autowired private TtOrderMapper ttOrderMapper; @@ -37,6 +44,9 @@ public class TtOrderServiceImpl implements TtOrderService { @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; + @Autowired + private WxAppinfoService wxAppinfoService; + @Override public PageInfo listAsPage(TtOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> ttOrderMapper.findList(record)); @@ -53,8 +63,8 @@ public class TtOrderServiceImpl implements TtOrderService { orderQ.setCUserId(cUserId); orderQ.setProductId(couponId); List statuss = new ArrayList<>(); - statuss.add(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); - statuss.add(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + statuss.add(EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + statuss.add(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); orderQ.setStatusS(statuss); Integer listCount = ttOrderMapper.findListCount(orderQ); if(listCount.intValue() > 0){ @@ -72,6 +82,9 @@ public class TtOrderServiceImpl implements TtOrderService { if (!coupon.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode())) { return new ResultData(ErrorCode.TTCOUPON_IS_TAKE_OFF); } + if(coupon.getSalePrice() == null || coupon.getSalePrice().intValue() == 0){ + return new ResultData(ErrorCode.TTCOUPON_IS_TAKE_OFF); + } try { // 4.2 保存订单 @@ -86,10 +99,10 @@ public class TtOrderServiceImpl implements TtOrderService { order.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); order.setPayment(coupon.getSalePrice()); if(order.getPayment() == null || order.getPayment().intValue() == 0){ - order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + order.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); order.setPaymentTime(now); }else{ - order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + order.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); } order.setCreateDate(now); order.setUpdateDate(now); @@ -113,27 +126,27 @@ public class TtOrderServiceImpl implements TtOrderService { if(memberId != null && !ttOrder.getCUserId().equals(memberId)){ return new ResultData(ErrorCode.ORDER_USER_NOT_MATCH); } - if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode())){//订单待付款 + if(ttOrder.getOrderStatus().equals(EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode())){//订单待付款 TtOrder record = new TtOrder(); record.setId(ttOrder.getId()); - record.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); + record.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); record.setUpdateDate(new Date()); ttOrderMapper.updateById(record); return new ResultData(); }else - if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode())){//订单已支付 + if(ttOrder.getOrderStatus().equals(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode())){//订单已支付 return new ResultData(ErrorCode.ORDER_HAD_PAY); }else - if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode())){//订单已取消 + if(ttOrder.getOrderStatus().equals(EnumTtOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode())){//订单已取消 return new ResultData(ErrorCode.ORDER_HAD_CANCEL); }else - if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode())){//订单待退款 + if(ttOrder.getOrderStatus().equals(EnumTtOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode())){//订单待退款 return new ResultData(ErrorCode.ORDER_PAY_IN_REFUND); }else - if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS.getCode())){//订单已退款 + if(ttOrder.getOrderStatus().equals(EnumTtOrderStatus.ORDER_STATUS_REFUND_SUCCESS.getCode())){//订单已退款 return new ResultData(ErrorCode.ORDER_PAY_REFUND); }else - if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_REFUND_FAILD.getCode())){//订单退款失败 + if(ttOrder.getOrderStatus().equals(EnumTtOrderStatus.ORDER_STATUS_REFUND_FAILD.getCode())){//订单退款失败 return new ResultData(ErrorCode.ORDER_PAY_REFUND_FAIL); } return new ResultData(ErrorCode.ORDER_IS_FAIL); @@ -153,4 +166,138 @@ public class TtOrderServiceImpl implements TtOrderService { return ttOrder; } + @Override + public ResultData createPay(TenantEntity tenantEntity,Long orderId, Long memberId, WxAppinfo appInfo) { + TtOrder order = ttOrderMapper.selectById(orderId); + if (null == order) { + logger.error("pay order, order not allow, orderId: " + orderId); + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); + } + if(!order.getCUserId().equals(memberId)){ + return new ResultData(ErrorCode.ORDER_USER_NOT_MATCH); + } + WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(memberId,tenantEntity.getFinalTenantId()); + if ( null == wxCUserBasicInfo) { + logger.error("会员用户不存在."+memberId); + return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),"会员用户不存在."+memberId); + } + if (null != wxCUserBasicInfo && EnumCreditLockedStatus.CLOSE.getCode().equals(wxCUserBasicInfo.getStatus())) { + return new ResultData(ErrorCode.MEMBER_IS_LOCKED); + } +// WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); + if(appInfo == null) { + return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + } + TtCoupon coupon = ttCouponService.getById(order.getProductId()); + if (!coupon.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode())) { + logger.error("券已经下架了>>>" + order.getProductId()); + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF); + } + + if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { + return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); + } + + if (order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()) { + logger.error("订单已支付: " + order.toString()); + return new ResultData(ErrorCode.ORDER_HAD_PAY); + } else if (order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()) { + logger.error("订单已取消: " + order.toString()); + return new ResultData(ErrorCode.ORDER_HAD_CANCEL); + } else if(order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode()){ + logger.info("订单支付中: " + order.toString()); + OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), appInfo.getSecret(), order.getId().toString(), null); + String trade_state = orderQueryResult.getOrderStatus(); + if ("PROCESSING".equals(trade_state)) {//处理中 + return new ResultData(ErrorCode.PAY_ORDER_PAYING); + }else if ("SUCCESS".equals(trade_state)) {//成功 + TtOrder orderSuc = new TtOrder(); + orderSuc.setId(order.getId()); + orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + orderSuc.setUpdateDate(new Date()); + ttOrderMapper.updateById(orderSuc); + return new ResultData(ErrorCode.PAY_ORDER_EXIST,"该订单已经支付,请勿重复支付!"); + }else if ("FAIL".equals(trade_state)) {//失败 + + }else if ("TIMEOUT".equals(trade_state)) {//超时 + + } + } else{ + if (order.getOrderStatus() != EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()) { + logger.error("订单已支付: " + order.toString()); + return new ResultData(ErrorCode.ORDER_IS_NOT_PAY); + } + } + DouYinCreatePreOrder preOrder = new DouYinCreatePreOrder(); + preOrder.setAppId(appInfo.getAppId()); + preOrder.setOutOrderNo(order.getId().toString()); + preOrder.setTotalAmount(order.getPayment()); + preOrder.setSubject(coupon.getTitle()); + preOrder.setBody(coupon.getTitle()); + preOrder.setValidTime(time_out); +// preOrder.setNotifyUrl();//回调地址 + + CreatePreOrderResult preOrderResult = DouYinPayHelper.createPreOrder(preOrder); + if(preOrderResult.isSuccess()){ + TtOrder orderSuc = new TtOrder(); + orderSuc.setId(order.getId()); + orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode()); + orderSuc.setUpdateDate(new Date()); + ttOrderMapper.updateById(orderSuc); + } + return new ResultData(preOrderResult); + } + + @Override + public ResultData updateOrderStatus(TenantEntity tenantEntity, Long orderId, Long memberId, WxAppinfo appInfo) { + TtOrder order = ttOrderMapper.selectById(orderId); + if (null == order) { + logger.error("pay order, order not allow, orderId: " + orderId); + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); + } + if(!order.getCUserId().equals(memberId)){ + return new ResultData(ErrorCode.ORDER_USER_NOT_MATCH); + } + WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(memberId,tenantEntity.getFinalTenantId()); + if ( null == wxCUserBasicInfo) { + logger.error("会员用户不存在."+memberId); + return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),"会员用户不存在."+memberId); + } + if (null != wxCUserBasicInfo && EnumCreditLockedStatus.CLOSE.getCode().equals(wxCUserBasicInfo.getStatus())) { + return new ResultData(ErrorCode.MEMBER_IS_LOCKED); + } +// WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); + if(appInfo == null) { + return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + } + if(order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode()){ + logger.info("订单支付中: " + order.toString()); + OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), appInfo.getSecret(), order.getId().toString(), null); + String trade_state = orderQueryResult.getOrderStatus(); + if ("PROCESSING".equals(trade_state)) {//处理中 + return new ResultData(ErrorCode.PAY_ORDER_PAYING); + }else if ("SUCCESS".equals(trade_state)) {//成功 + TtOrder orderSuc = new TtOrder(); + orderSuc.setId(order.getId()); + orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + orderSuc.setUpdateDate(new Date()); + ttOrderMapper.updateById(orderSuc); + return new ResultData(ErrorCode.PAY_ORDER_EXIST,"该订单已经支付,请勿重复支付!"); + }else if ("FAIL".equals(trade_state)) {//失败 + TtOrder orderSuc = new TtOrder(); + orderSuc.setId(order.getId()); + orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + orderSuc.setUpdateDate(new Date()); + ttOrderMapper.updateById(orderSuc); + }else if ("TIMEOUT".equals(trade_state)) {//超时 + TtOrder orderSuc = new TtOrder(); + orderSuc.setId(order.getId()); + orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); + orderSuc.setUpdateDate(new Date()); + ttOrderMapper.updateById(orderSuc); + } + } + return new ResultData(); + } + } diff --git a/mallinkTTCApi/src/main/java/com/iformall/controller/TtOrderController.java b/mallinkTTCApi/src/main/java/com/iformall/controller/TtOrderController.java index 5a8819006..7901cb2d6 100644 --- a/mallinkTTCApi/src/main/java/com/iformall/controller/TtOrderController.java +++ b/mallinkTTCApi/src/main/java/com/iformall/controller/TtOrderController.java @@ -1,27 +1,14 @@ package com.iformall.controller; -import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; -import com.iformall.common.Result; import com.iformall.common.ResultData; -import com.iformall.domain.dto.OrderSaveDto; -import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.po.WxOrder; -import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.po.*; import com.iformall.domain.po.tt.TtOrder; -import com.iformall.domain.vo.WxCouponCVo; -import com.iformall.domain.vo.WxOrderCouponPressVo; -import com.iformall.domain.vo.WxOrderCouponVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; -import com.iformall.service.WxCUserBasicInfoService; -import com.iformall.service.WxCouponChannelService; -import com.iformall.service.WxCouponService; -import com.iformall.service.WxOrderService; +import com.iformall.service.*; import com.iformall.service.tt.TtOrderService; import com.iformall.utils.Constant; -import com.iformall.utils.RedisLock; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -30,11 +17,9 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; -import java.util.Date; +import javax.servlet.http.HttpServletRequest; import java.util.Map; @RestController @@ -47,24 +32,12 @@ public class TtOrderController extends BaseController { @Autowired private TtOrderService ttOrderService; - WxOrderService wxOrderService; - - @Autowired - private WxCouponChannelService wxCouponChannelService; - @Autowired - private WxCouponService wxCouponService; + private WxAppinfoService wxAppinfoService; @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; - @Autowired - @Qualifier("couponDetailRedisTemplate") - RedisTemplate cdRedisTemplate; - - @Autowired - RedisLock redisLock; - @ApiOperation("分页订单列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -164,4 +137,90 @@ public class TtOrderController extends BaseController { return new ResultData(order); } + + + /** + * tt支付 + * @param paramMap + * @param request + * @return + * @throws Exception + */ + //@ApiOperation(value = "发起小程序支付订单", notes = "{\"orderId\":\"string\"}") + @RequestMapping(value = "/createPay", method = RequestMethod.POST) + public ResultData _create(@RequestBody Map paramMap, HttpServletRequest request) throws Exception { + logger.info("/api/pay/create" + paramMap.toString()); + String orderIdStr = paramMap.get("orderId"); + if (StringUtils.isBlank(orderIdStr)) { + logger.info("orderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + Long orderId; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "orderId: " + orderIdStr + ", e: " + e.getMessage()); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (MallinkException e) { + return new ResultData(e.getErrorCode(), e.getMessage()); + } + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(getTenantInfo(), EnumPayWay.PAY_WAY_TT); + if(cAppInfo == null){ + return new ResultData(ErrorCode.APP_ID_NOT_ENABLE); + } + return ttOrderService.createPay(getTenantInfo(),orderId,memberId,cAppInfo); + + } + + @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") + @PostMapping("/updateOrderStatus") + public ResultData updateOrderStatus(@RequestBody Map paramMap) { + logger.info("/api/pay/updateOrderStatus" + paramMap.toString()); + String orderIdStr = (String) paramMap.get("orderId"); + String codeStr = (String) paramMap.get("code"); + if (StringUtils.isBlank(orderIdStr)) { + logger.info("orderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + if (StringUtils.isBlank(codeStr)) { + logger.info("code不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "code不能为空"); + } + Long orderId; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "orderId: " + orderIdStr + ", e: " + e.getMessage()); + } + Integer code; + try { + code = Integer.valueOf(codeStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "code: " + codeStr + ", e: " + e.getMessage()); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (MallinkException e) { + return new ResultData(e.getErrorCode(), e.getMessage()); + } + + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(getTenantInfo(), EnumPayWay.PAY_WAY_TT); + if (cAppInfo == null) { + return new ResultData(ErrorCode.APP_ID_NOT_ENABLE); + } + if(code.intValue() == 0){ + return ttOrderService.updateOrderStatus(getTenantInfo(),orderId,memberId,cAppInfo); + }else{ + return new ResultData(); + } + + } + } diff --git a/mallinkTTCApi/src/main/java/com/iformall/controller/TtPayOrderController.java b/mallinkTTCApi/src/main/java/com/iformall/controller/TtPayOrderController.java deleted file mode 100644 index 007e75380..000000000 --- a/mallinkTTCApi/src/main/java/com/iformall/controller/TtPayOrderController.java +++ /dev/null @@ -1,223 +0,0 @@ -package com.iformall.controller; - -import com.iformall.common.ErrorCode; -import com.iformall.common.IdWorker; -import com.iformall.common.Result; -import com.iformall.common.ResultData; -import com.iformall.domain.po.*; -import com.iformall.domain.po.tt.TtCUser; -import com.iformall.enums.EnumCreditLockedStatus; -import com.iformall.enums.EnumOrderStatus; -import com.iformall.enums.EnumPayStatus; -import com.iformall.enums.EnumPayWay; -import com.iformall.exception.MallinkException; -import com.iformall.service.*; -import com.iformall.service.pay.entity.PayExtraParam; -import com.iformall.utils.IPUtil; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; -import java.util.Map; - -@RestController -@RequestMapping("/api/pay") -@Api(description = "支付相关接口") -public class TtPayOrderController extends BaseController { - - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Autowired - private WxPayOrderService wxPayOrderService; - - @Autowired - private WxOrderService wxOrderService; - - @Autowired - private WxCUserBasicInfoService wxCUserBasicInfoService; - - @Autowired - private WxPayAccountService wxPayAccountService; - - @Autowired - private WxCouponService wxCouponService; - - @Autowired - private WxAppinfoService wxAppinfoService; - - /** - * 微信支付 - * @param paramMap - * @param request - * @return - * @throws Exception - */ - //@ApiOperation(value = "发起微信小程序支付订单", notes = "{\"orderId\":\"string\"}") - @RequestMapping(value = "/create", method = RequestMethod.POST) - public ResultData _create(@RequestBody Map paramMap, HttpServletRequest request) throws Exception { - logger.info("/api/pay/create" + paramMap.toString()); - String orderIdStr = paramMap.get("orderId"); - if (StringUtils.isBlank(orderIdStr)) { - logger.info("orderId不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); - } - - TtCUser user = getTtCUser(); - if (!user.basicInfoIs()) { - logger.error("暂未成为会员,请授权手机号"); - return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); - } - - return _create(orderIdStr,user.getUserId(),EnumPayWay.PAY_WAY_TT,user.getAppId(),new PayExtraParam("openId",user.getOpenId()),request); - } - - private ResultData _create(String orderIdStr,Long userId, EnumPayWay payWay,String appId,PayExtraParam parm,HttpServletRequest request) { - WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(userId,getTenantInfo().getFinalTenantId()); - if ( null == wxCUserBasicInfo) { - logger.error("会员用户不存在."+userId); - return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),"会员用户不存在."+userId); - } - if (null != wxCUserBasicInfo && EnumCreditLockedStatus.CLOSE.getCode().equals(wxCUserBasicInfo.getStatus())) { - return new ResultData(ErrorCode.MEMBER_IS_LOCKED); - } - WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); - if(appInfo == null) { - return new ResultData(ErrorCode.APP_ID_NOT_FOUND); - } - Long orderId = 0L; - try { - orderId = Long.valueOf(orderIdStr); - } catch (NumberFormatException e) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); - } - WxPayOrder record = new WxPayOrder(); - record.setOrderId(orderId); - try { - record.setIp(IPUtil.getIpAddr(request)); - return wxPayOrderService.createPayOrder(appInfo, wxCUserBasicInfo, record, payWay,parm); - } catch (MallinkException e) { - logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } catch (Exception e) { - logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.PAY_ORDER_ERROR, e.getMessage()); - } - } - - @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") - @PostMapping("/updatePayOrder") - public ResultData updatePayOrder(@RequestBody Map paramMap) { - logger.info("/api/pay/updatePayOrder" + paramMap.toString()); - String payOrderIdStr = (String) paramMap.get("payOrderId"); - String orderIdStr = (String) paramMap.get("orderId"); - String reasonStr = (String) paramMap.get("reason"); - Integer status = (Integer) paramMap.get("status"); - if (StringUtils.isBlank(orderIdStr)) { - logger.info("orderId不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); - } - Long payOrderId = 0L, orderId = 0L; - try { - orderId = Long.valueOf(orderIdStr); - } catch (NumberFormatException e) { - logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); - } - if (!StringUtils.isBlank(payOrderIdStr)) { - try { - payOrderId = Long.valueOf(payOrderIdStr); - } catch (NumberFormatException e) { - logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确"); - } - } - - if(payOrderIdStr.equalsIgnoreCase("0")) { - // 免费券直接返回成功 - return new ResultData(Result.SUCCESS, "免费券支付状态更新成功"); - } - - WxPayOrder payOrder = new WxPayOrder(); - payOrder.setId(payOrderId); - payOrder.setPayOrderNo(String.valueOf(payOrderId)); - payOrder.setOrderId(orderId); - payOrder.setPayOrderStatus(status); - payOrder.setFailReason(reasonStr); - payOrder.updateTenantInfo(getTenantInfo()); - payOrder.setPayVendor(EnumPayWay.PAY_WAY_WECHAT.getCode()); - - try { - //有价券支付成功 - if (status.equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())) { - // 前端提示支付成功, 不作为支付成功标志,只检查支付订单状态 - // 有价券不走update, callback更新 - if (payOrderId<=0) { - logger.error("/api/pay/updatePayOrder error : payOrderId不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "payOrderId非法"+payOrderId+"[payOrderIdStr:"+payOrderIdStr+"]"); - } - payOrder = wxPayOrderService.getById(payOrderId,payOrder.getTenantId()); - if (null == payOrder) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到payOrder."); - } - WxOrder order = wxOrderService.getById(orderId,payOrder.getTenantId()); - if (null == order) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到Order["+orderId+"]."); - } - WxCoupon wxCoupon = wxCouponService.getById(order.getProductId(),order.getTenantId()); - if (null == wxCoupon) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "未查询到优惠券[orderId:"+orderId+"]."); - } - - //拼团的订单,如果查询到是拼团待付款的,则重新查询是否已经真的支付,其他的直接返回订单信息 - if (wxPayOrderService.isOrderGroupCoupon(payOrder, wxCoupon)) { - if (!order.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode())) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); - } - }else { - //非拼团的订单,支付成功,关闭订单,撤销支付订单,支付转退款的,直接返回订单信息,其他需要查询真实支付状态 - if (payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())|| - payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_CLOSE.getCode())|| - payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REVERSE.getCode())|| - payOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_REFUND.getCode())) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); - } - } - //查询微信订单状态并更新 - - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor())); - //WxCUser user = getUser(); - //WxAppinfo appInfo = getAppInfo(user.getAppId()); - if (null == appInfo) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo"); - } - WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); - try { - WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, order, appInfo, payAccount, IdWorker.get(),false); - if (null != wo) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); - } - }catch(MallinkException e) { - //已经同步了微信的支付状态,表示已经更新 - return new ResultData(Result.SUCCESS, "支付状态更新成功", order); - } - - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); - } else if (status.equals(EnumPayStatus.PAY_STATUS_FAIL.getCode())) { - // 有价券支付失败 - wxPayOrderService.handlePayOrderFail(payOrder, EnumPayStatus.PAY_STATUS_FAIL.getCode()); - } - return new ResultData(Result.SUCCESS, "支付状态更新成功"); - } catch (MallinkException e) { - logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } catch (Exception e) { - logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); - } - } -} From 82c8f4fcb95bca8e6d6ddbdf6d843e54748fed27 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 18 May 2021 19:16:54 +0800 Subject: [PATCH 02/29] tt --- .../com/iformall/domain/po/tt/TtCoupon.java | 6 +- .../iformall/domain/po/tt/TtUserCollect.java | 20 ++++++ .../domain/po/tt/TtUserCollectFollow.java | 32 +++++++++ .../iformall/domain/po/tt/TtUserFollow.java | 18 +++++ .../iformall/domain/po/tt/TtVideoLibrary.java | 42 +++++++++++ .../iformall/mapper/TtUserCollectMapper.java | 14 ++++ .../iformall/mapper/TtUserFollowMapper.java | 14 ++++ .../iformall/mapper/TtVideoLibraryMapper.java | 14 ++++ .../resources/mapper/TtUserCollectMapper.xml | 67 ++++++++++++++++++ .../resources/mapper/TtUserFollowMapper.xml | 67 ++++++++++++++++++ .../resources/mapper/TtVideoLibraryMapper.xml | 64 +++++++++++++++++ .../controller/tt/TtCouponController.java | 16 +++-- .../controller/video/VideoController.java | 70 +++++++------------ 13 files changed, 392 insertions(+), 52 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollect.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserFollow.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/TtUserCollectMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/TtUserFollowMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java create mode 100644 mallinkService/src/main/resources/mapper/TtUserCollectMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/TtUserFollowMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java index 97639ad06..7bb43543c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java @@ -13,6 +13,7 @@ import lombok.ToString; import java.math.BigDecimal; import java.util.Date; import java.util.List; +import java.util.Map; @TableName(value = "tt_coupon") @Data @@ -133,9 +134,12 @@ public class TtCoupon extends TenantEntity { private TtCoupon couponCoumn; @TableField(exist = false) - @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "columnCoupons") private List columnCoupons; + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "flowParams") + private Map flowParams; + public String getSalePriceStr() { if(salePrice!=null) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollect.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollect.java new file mode 100644 index 000000000..277271a64 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollect.java @@ -0,0 +1,20 @@ +package com.iformall.domain.po.tt; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +@TableName(value = "tt_user_collect") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtUserCollect extends TtUserCollectFollow { + + + @io.swagger.annotations.ApiModelProperty(value="",name="couponId") + private Long couponId; + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java new file mode 100644 index 000000000..b374c4e0f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java @@ -0,0 +1,32 @@ +package com.iformall.domain.po.tt; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +public class TtUserCollectFollow extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + + @io.swagger.annotations.ApiModelProperty(value = "是否删除1是0否", name = "isDel") + private Integer isDel; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-起始时间",name="startdate") + private Date startdate; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-结束时间",name="enddate") + private Date enddate; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserFollow.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserFollow.java new file mode 100644 index 000000000..e7e8378e6 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserFollow.java @@ -0,0 +1,18 @@ +package com.iformall.domain.po.tt; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + + +@TableName(value = "tt_user_follow") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtUserFollow extends TtUserCollectFollow { + + @io.swagger.annotations.ApiModelProperty(value="",name="merchernId") + private Long merchernId; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java new file mode 100644 index 000000000..43ec165d4 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java @@ -0,0 +1,42 @@ +package com.iformall.domain.po.tt; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@TableName(value = "tt_video_library") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtVideoLibrary extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="封面图",name="preview") + private String preview; + @io.swagger.annotations.ApiModelProperty(value="",name="name") + private String name; + @io.swagger.annotations.ApiModelProperty(value="时长",name="duration") + private Integer duration; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + + @io.swagger.annotations.ApiModelProperty(value = "是否删除1是0否", name = "isDel") + private Integer isDel; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-起始时间",name="startdate") + private Date startdate; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-结束时间",name="enddate") + private Date enddate; + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtUserCollectMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtUserCollectMapper.java new file mode 100644 index 000000000..817a6e26d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/TtUserCollectMapper.java @@ -0,0 +1,14 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.tt.TtUserCollect; + +import java.util.List; + +public interface TtUserCollectMapper extends CommonMapper { + + List findList(TtUserCollect collect); + + int deleteById(Long id); + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtUserFollowMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtUserFollowMapper.java new file mode 100644 index 000000000..c8622e054 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/TtUserFollowMapper.java @@ -0,0 +1,14 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.tt.TtUserFollow; + +import java.util.List; + +public interface TtUserFollowMapper extends CommonMapper { + + List findList(TtUserFollow collect); + + int deleteById(Long id); + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java new file mode 100644 index 000000000..7a458cf13 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java @@ -0,0 +1,14 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.tt.TtVideoLibrary; + +import java.util.List; + +public interface TtVideoLibraryMapper extends CommonMapper { + + List findList(TtVideoLibrary video); + + int deleteById(Long id); + +} diff --git a/mallinkService/src/main/resources/mapper/TtUserCollectMapper.xml b/mallinkService/src/main/resources/mapper/TtUserCollectMapper.xml new file mode 100644 index 000000000..2abff1ac0 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/TtUserCollectMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + `id`, `tenant_id`, `parent_tenant_id`, `user_id`, `coupon_id`, `create_date`, `update_date` + + + + where `is_del` = 0 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `user_id` = #{userId} + + + + and `coupon_id` = #{couponId} + + + + and `create_date` >= #{startdate} + + + and `create_date` <= #{enddate} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + update tt_user_collect set is_del = 1,update_date=now() where id = #{id} + + + diff --git a/mallinkService/src/main/resources/mapper/TtUserFollowMapper.xml b/mallinkService/src/main/resources/mapper/TtUserFollowMapper.xml new file mode 100644 index 000000000..27ffaa71b --- /dev/null +++ b/mallinkService/src/main/resources/mapper/TtUserFollowMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + `id`, `tenant_id`, `parent_tenant_id`, `user_id`, `merchern_id`, `create_date`, `update_date` + + + + where `is_del` = 0 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `user_id` = #{userId} + + + + and `merchern_id` = #{merchernId} + + + + and `create_date` >= #{startdate} + + + and `create_date` <= #{enddate} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + update tt_user_follow set is_del = 1,update_date=now() where id = #{id} + + + diff --git a/mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml b/mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml new file mode 100644 index 000000000..c9c671ca3 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + `id`, `tenant_id`, `parent_tenant_id`, `preview`, `name`, `duration`, `create_date`, `update_date` + + + + where `is_del` = 0 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `title` like concat('%', #{name},'%') + + + + and `create_date` >= #{startdate} + + + and `create_date` <= #{enddate} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + update tt_video_library set is_del = 1,update_date=now() where id = #{id} + + + diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java index 07d12e2bb..77f441ba4 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java @@ -7,6 +7,7 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCoupon; import com.iformall.enums.*; +import com.iformall.service.WxFlowService; import com.iformall.service.tt.TtCouponService; import com.iformall.utils.RedisLock; import io.swagger.annotations.Api; @@ -28,6 +29,9 @@ public class TtCouponController extends BaseController { @Autowired private TtCouponService ttCouponService; + @Autowired + private WxFlowService wxFlowService; + @Autowired RedisLock redisLock; @@ -57,12 +61,12 @@ public class TtCouponController extends BaseController { } //启动投放审批 -// if(record.getFlowParams() !=null && record.getFlowParams().size()>0) { -// record.getFlowParams().put("businessId",record.getId()); -// wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); -// //修改coupon applyStatus状态为审核中 -// record.setPutApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); -// } + if(record.getFlowParams() !=null && record.getFlowParams().size()>0) { + record.getFlowParams().put("businessId",record.getId()); + wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); + //修改coupon applyStatus状态为审核中 + record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); + } return resultData; } diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java index 597d9d55e..35635f3e4 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -1,41 +1,9 @@ package com.iformall.controller.video; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.github.pagehelper.PageInfo; -import com.iformall.annotation.SystemControllerLog; -import com.iformall.annotation.UserDataRuleAnnotation; import com.iformall.common.ErrorCode; -import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.MallUserInfo; -import com.iformall.domain.po.WxBillProperty; -import com.iformall.domain.po.WxMallBuilding; -import com.iformall.domain.po.WxMallFloor; -import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPropertyContract; -import com.iformall.domain.po.WxRentContract; -import com.iformall.domain.po.WxShop; -import com.iformall.domain.po.base.TenantEntity; -import com.iformall.domain.po.base.BaseEntity.SortField; -import com.iformall.enums.EnumContractOperationType; -import com.iformall.enums.EnumContractType; -import com.iformall.enums.EnumFlowContractType; -import com.iformall.enums.EnumFlowKey; -import com.iformall.enums.EnumIsPreview; -import com.iformall.enums.EnumRentContractAppStatus; -import com.iformall.enums.EnumRentContractStatus; -import com.iformall.enums.EnumRentShopType; -import com.iformall.enums.EnumRentStartType; -import com.iformall.exception.MallinkException; -import com.iformall.mapper.WxPropertyContractMapper; -import com.iformall.service.WxBillPropertyService; -import com.iformall.service.WxMallBuildingService; -import com.iformall.service.WxMallFloorService; -import com.iformall.service.WxPropertyContractService; -import com.iformall.service.WxRentPropertyContractService; -import com.iformall.service.WxShopService; import com.iformall.video.VideoFactory; import com.iformall.video.entity.VideUploadResult; @@ -43,20 +11,12 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -69,7 +29,7 @@ public class VideoController extends BaseController { @Autowired VideoFactory videoFactory; - + @Autowired String videoType; @@ -80,7 +40,7 @@ public class VideoController extends BaseController { VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo("123123213", "/root/111.mp4"); return new ResultData(result); } - + /** * 上传视频 * @@ -90,10 +50,9 @@ public class VideoController extends BaseController { */ @PostMapping(value = "/upload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("上传视频") - @SystemControllerLog(description = "文件上传") - public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq,@RequestParam Map param) { + public ResultData upload(@RequestParam("file") MultipartFile multiReq,@RequestParam Map param) { try { - String title = param.get("title"); + String title = param.get("title"); VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream()); return new ResultData(result); } catch (Exception e) { @@ -102,4 +61,25 @@ public class VideoController extends BaseController { } } + /** + * 上传视频 + * + * @param multiReq + * @return + * @throws Exception + */ + @GetMapping(value = "/uploadProgress") + @ApiOperation("上传视频进度") + @ApiImplicitParams({ + @ApiImplicitParam(name = "videoId", value = "视频编号", dataType = "String", paramType = "query", required = true)}) + public ResultData uploadProgress(String videoId) { + try { + String result = videoFactory.getExcutor(videoType).getVedioUploadProgress(videoId); + return new ResultData(result); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } + } + } From f4a30658dca40db87476f55823933c76428e65fe Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 18 May 2021 19:33:34 +0800 Subject: [PATCH 03/29] tt --- mallinkTTAdmin/src/main/java/com/iformall/utils/UrlCheck.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkTTAdmin/src/main/java/com/iformall/utils/UrlCheck.java b/mallinkTTAdmin/src/main/java/com/iformall/utils/UrlCheck.java index 868116aa7..3db1a7a23 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/utils/UrlCheck.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/utils/UrlCheck.java @@ -22,7 +22,8 @@ public class UrlCheck { || url.contains("/kwMeter/import") || url.contains("/wxImportTemplate/importTemplate") || url.contains("/invest/customer/importCustomer") - || url.contains("/alipay/imageUpload"); + || url.contains("/alipay/imageUpload") + || url.contains("/video/upload"); } } From 540d094791c8881f175411a18fb58979a7ab96c2 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 10:26:55 +0800 Subject: [PATCH 04/29] tt --- .../java/com/iformall/video/aliyun/AliyunVideoExcutor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index b137e7e29..dd5b0ab5d 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -5,6 +5,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -70,7 +71,7 @@ public class AliyunVideoExcutor implements VideoExcutor { VideUploadResult result = new VideUploadResult(); UploadStreamResponse response; try { - response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, "", inputStream,redisTemplate); + response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-",""), inputStream,redisTemplate); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); From f4f173a763b34f542076e03034dd48df52ce36a2 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 11:03:03 +0800 Subject: [PATCH 05/29] tt --- .../controller/video/VideoController.java | 10 ++++++- .../java/com/iformall/common/ErrorCode.java | 1 + .../controller/video/VideoController.java | 10 ++++++- .../java/com/iformall/video/VideoExcutor.java | 2 +- .../video/aliyun/AliyunVideoExcutor.java | 27 +++++++++++++++---- .../aliyun/sdk/server/AliyunVedioServer.java | 13 +++++++++ .../video/entity/VideUploadResult.java | 3 +++ 7 files changed, 58 insertions(+), 8 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java index e4e922d52..b0002b065 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -93,7 +93,15 @@ public class VideoController extends BaseController { public ResultData upload(@RequestParam("file") MultipartFile multiReq,@RequestParam Map param) { try { String title = param.get("title"); - VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream()); + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + if(!fileFormat.endsWith("mp4")){ + return new ResultData(ErrorCode.PICTURE_ENDWIDTH_ERROR); + } + VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream(),fileFormat); return new ResultData(result); } catch (Exception e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 8e23783b3..a23338520 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -564,6 +564,7 @@ public enum ErrorCode{ PICTURE_ANALYZING_ERROR(40002, "您上传的图片无法解析,请检查"), PICTURE_SIZE_CUSTOMIZE(40003, "图片超过大小限制"), PICTURE_W_H_CUSTOMIZE(40004, "图片不符合宽高限制"), + PICTURE_ENDWIDTH_ERROR(40005, "格式不正确"), /** * 电费生成配置 diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java index 35635f3e4..6ea6679af 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -53,7 +53,15 @@ public class VideoController extends BaseController { public ResultData upload(@RequestParam("file") MultipartFile multiReq,@RequestParam Map param) { try { String title = param.get("title"); - VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream()); + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + if(!fileFormat.endsWith("mp4")){ + return new ResultData(ErrorCode.PICTURE_ENDWIDTH_ERROR); + } + VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo(title, multiReq.getInputStream(),fileFormat); return new ResultData(result); } catch (Exception e) { logger.error(e.getMessage()); diff --git a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java index fefce84ac..cfeb04f17 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java @@ -13,7 +13,7 @@ public interface VideoExcutor { */ public VideUploadResult uploadLocalVideo(String title,String localFile); - public VideUploadResult uploadLocalVideo(String title,InputStream inputStream); + public VideUploadResult uploadLocalVideo(String title,InputStream inputStream,String fileFormat); //ext,后缀名 public VideUploadResult uploadNetVideo(String title,String url,String ext); diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index dd5b0ab5d..7764495fe 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -1,12 +1,11 @@ package com.iformall.video.aliyun; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.util.List; import java.util.UUID; +import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; @@ -51,6 +50,7 @@ public class AliyunVideoExcutor implements VideoExcutor { UploadVideoResponse response =AliyunVedioUpload.uploadVideo(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, localFile,redisTemplate); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); + setVideUploadResult(result,response.getVideoId()); result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); result.setSuccess(true); }else { @@ -66,12 +66,29 @@ public class AliyunVideoExcutor implements VideoExcutor { return result; } + private void setVideUploadResult(VideUploadResult result,String videoId) throws ClientException { + result.setVideoId(videoId); + GetPlayInfoResponse response = AliyunVedioServer.getPlayInfoResponse(config, videoId); + if(response != null){ + List playInfoList = response.getPlayInfoList(); + //播放地址 + for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) { + result.setVideoUrl(playInfo.getPlayURL()); + break; + } + GetPlayInfoResponse.VideoBase videoBase = response.getVideoBase(); + result.setDuration(videoBase.getDuration()); + result.setCoverURL(videoBase.getCoverURL()); + result.setTitle(videoBase.getTitle()); + } + } + @Override - public VideUploadResult uploadLocalVideo(String title,InputStream inputStream) { + public VideUploadResult uploadLocalVideo(String title,InputStream inputStream,String fileFormat) { VideUploadResult result = new VideUploadResult(); UploadStreamResponse response; try { - response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-",""), inputStream,redisTemplate); + response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-","")+fileFormat, inputStream,redisTemplate); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java index 387de1d28..d35823f92 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/server/AliyunVedioServer.java @@ -41,4 +41,17 @@ public class AliyunVedioServer { } return null; } + + public static GetPlayInfoResponse getPlayInfoResponse(AliyunVideoConfig config, String videoId) throws ClientException { + DefaultAcsClient client = initVodClient(config); + GetPlayInfoResponse response = new GetPlayInfoResponse(); + try { + GetPlayInfoRequest request = new GetPlayInfoRequest(); + request.setVideoId(videoId); + return client.getAcsResponse(request); + } catch (Exception e) { + log.error("getVedioUrl error.",e); + } + return null; + } } diff --git a/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java b/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java index 55bdb92e6..70ae1d469 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java +++ b/mallinkVideo/src/main/java/com/iformall/video/entity/VideUploadResult.java @@ -6,6 +6,9 @@ import lombok.Data; public class VideUploadResult { private String videoId; private String videoUrl; + private String coverURL;//视频封面 + private String duration;//视频时长 + private String title;//视频标题 private boolean success = false; private String msg; } From 9bfb8ec0e07158d8630050bc7c2df694ef614904 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 14:13:24 +0800 Subject: [PATCH 06/29] tt --- .../main/java/com/iformall/domain/po/tt/TtCoupon.java | 10 ++++++---- .../src/main/resources/mapper/TtCouponMapper.xml | 8 ++++---- .../com/iformall/video/aliyun/AliyunVideoExcutor.java | 1 + 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java index 7bb43543c..42095ecee 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java @@ -58,8 +58,8 @@ public class TtCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="",name="videoId") private String videoId; - @io.swagger.annotations.ApiModelProperty(value="视频时长(分钟)",name="videoTime") - private Integer videoTime; + @io.swagger.annotations.ApiModelProperty(value="视频时长(秒)",name="videoTime") + private String videoTime; @io.swagger.annotations.ApiModelProperty(value="富文本内容",name="html") private String html; @@ -117,9 +117,11 @@ public class TtCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="作者",name="merchantId") private Long merchantId; - @io.swagger.annotations.ApiModelProperty(value="",name="merchantName")//弃用 + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="",name="merchantName") private String merchantName; - @io.swagger.annotations.ApiModelProperty(value="",name="merchantPic")//弃用 + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="",name="merchantPic") private String merchantPic; @io.swagger.annotations.ApiModelProperty(value="业态",name="businessId") diff --git a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml index f59e9e4bd..7f0484a02 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml @@ -12,7 +12,7 @@ - + @@ -36,10 +36,10 @@ - - + + @@ -48,7 +48,7 @@ `sale_price`, `orig_price`, `is_preview`, `preview_duration`, `detail`, `false_sell_count`, `dy_title`, `inventory`, `remark`, `status`, `create_date`, `update_date`, `see_count`, `sell_count`, `assess_count`, `collect_count`, `is_del`, - `column_id`, `popularity`, `merchant_id`, `merchant_name`,`merchant_pic`, `business_id`, `business_name` + `column_id`, `popularity`, `merchant_id`, `business_id`, `business_name` diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index 7764495fe..97728a180 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -89,6 +89,7 @@ public class AliyunVideoExcutor implements VideoExcutor { UploadStreamResponse response; try { response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-","")+fileFormat, inputStream,redisTemplate); + log.info(response.toString()); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); From cd5d57e548019cac431b1d7602c410c7da5e05d6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 14:43:30 +0800 Subject: [PATCH 07/29] tt --- .../java/com/iformall/config/ShiroConfig.java | 4 +- .../controller/ueditor/ActionEnter.java | 120 +++++++++ .../controller/ueditor/ConfigManager.java | 246 ++++++++++++++++++ .../iformall/controller/ueditor/Encoder.java | 24 ++ .../controller/ueditor/PathFormat.java | 157 +++++++++++ .../controller/ueditor/UEditorConfig.java | 59 +++++ .../controller/ueditor/define/ActionMap.java | 42 +++ .../ueditor/define/ActionState.java | 5 + .../controller/ueditor/define/AppInfo.java | 77 ++++++ .../controller/ueditor/define/BaseState.java | 92 +++++++ .../controller/ueditor/define/FileType.java | 31 +++ .../controller/ueditor/define/MIMEType.java | 20 ++ .../controller/ueditor/define/MultiState.java | 110 ++++++++ .../controller/ueditor/define/State.java | 18 ++ .../ueditor/hunter/FileManager.java | 111 ++++++++ .../ueditor/hunter/ImageHunter.java | 140 ++++++++++ .../ueditor/upload/Base64Uploader.java | 52 ++++ .../ueditor/upload/BinaryUploader.java | 71 +++++ .../ueditor/upload/StorageManager.java | 148 +++++++++++ .../controller/ueditor/upload/Uploader.java | 93 +++++++ .../video/aliyun/AliyunVideoExcutor.java | 4 +- 21 files changed, 1620 insertions(+), 4 deletions(-) create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java diff --git a/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java index 7e16e23c8..75cd12d65 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java @@ -152,8 +152,8 @@ public class ShiroConfig { //配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 filterChainDefinitionMap.put("/logout", "authc"); - filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); -// filterChainDefinitionMap.put("/**", "anon"); +// filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); + filterChainDefinitionMap.put("/**", "anon"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java new file mode 100644 index 000000000..92a0dcc77 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java @@ -0,0 +1,120 @@ +package com.iformall.controller.ueditor; + +import com.iformall.ueditor.ConfigManager; +import com.iformall.ueditor.define.ActionMap; +import com.iformall.ueditor.define.AppInfo; +import com.iformall.ueditor.define.BaseState; +import com.iformall.ueditor.define.State; +import com.iformall.ueditor.hunter.FileManager; +import com.iformall.ueditor.hunter.ImageHunter; +import com.iformall.ueditor.upload.Uploader; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + +public class ActionEnter { + + private HttpServletRequest request = null; + + private String actionType = null; + + private ConfigManager configManager = null; + + public ActionEnter(ConfigManager configManager) { + this.configManager = configManager; + } + + public Object exec(HttpServletRequest request) { + this.request = request; + this.actionType = request.getParameter("action"); + String callbackName = this.request.getParameter("callback"); + + if (callbackName != null) { + + if (!validCallbackName(callbackName)) { + return new BaseState(false, AppInfo.ILLEGAL).toJSONString(); + } + + //return callbackName + "(" + this.invoke() + ");"; + return this.invoke(); + + } else { + return this.invoke(); + } + + } + + public Object invoke() { + + if (actionType == null || !ActionMap.mapping.containsKey(actionType)) { + return new BaseState(false, AppInfo.INVALID_ACTION).toJSONString(); + } + + if (this.configManager == null || !this.configManager.valid()) { + return new BaseState(false, AppInfo.CONFIG_ERROR).toJSONString(); + } + + State state = null; + + int actionCode = ActionMap.getType(this.actionType); + + Map conf = null; + + switch (actionCode) { + + case ActionMap.CONFIG: + return this.configManager.getAllConfig(); + + case ActionMap.UPLOAD_IMAGE: + case ActionMap.UPLOAD_SCRAWL: + case ActionMap.UPLOAD_VIDEO: + case ActionMap.UPLOAD_FILE: + conf = this.configManager.getConfig(actionCode); + state = new Uploader(request, conf, configManager.getMallResourceService(),configManager.getAliyunOSS()).doExec(); + break; + + case ActionMap.CATCH_IMAGE: + conf = configManager.getConfig(actionCode); + String[] list = this.request.getParameterValues((String) conf.get("fieldName")); + state = new ImageHunter(conf).capture(list); + break; + + case ActionMap.LIST_IMAGE: + case ActionMap.LIST_FILE: + conf = configManager.getConfig(actionCode); + int start = this.getStartIndex(); + state = new FileManager(conf).listFile(start); + break; + + } + + return state.toJSONString(); + + } + + public int getStartIndex() { + + String start = this.request.getParameter("start"); + + try { + return Integer.parseInt(start); + } catch (Exception e) { + return 0; + } + + } + + /** + * callback参数验证 + */ + public boolean validCallbackName(String name) { + + if (name.matches("^[a-zA-Z_]+[\\w0-9_]*$")) { + return true; + } + + return false; + + } + +} \ No newline at end of file diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java new file mode 100644 index 000000000..358abe410 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java @@ -0,0 +1,246 @@ +package com.iformall.controller.ueditor; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; +import com.iformall.config.AwsProperty; +import com.iformall.file.aliyun.AliyunOSS; +import com.iformall.service.MallResourceService; +import com.iformall.ueditor.UEditorConfig; +import com.iformall.ueditor.define.ActionMap; + +import java.io.*; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +/** + * 配置管理器 + * + * @author hancong03@baidu.com + */ +public final class ConfigManager { + + private static final String configFileName = "config.json"; + private JSONObject jsonConfig = null; + // 涂鸦上传filename定义 + private final static String SCRAWL_FILE_NAME = "scrawl"; + // 远程图片抓取filename定义 + private final static String REMOTE_FILE_NAME = "remote"; + //配置信息 + private UEditorConfig uEditorConfig; + private AwsProperty awsProperty; + private MallResourceService mallResourceService; + private AliyunOSS aliyunOSS; + + /* + * 通过一个给定的路径构建一个配置管理器, 该管理器要求地址路径所在目录下必须存在config.properties文件 + */ + private ConfigManager(UEditorConfig uEditorConfig, AwsProperty awsProperty, MallResourceService mallResourceService, AliyunOSS aliyunOSS) throws IOException { + this.uEditorConfig = uEditorConfig; + this.awsProperty = awsProperty; + this.mallResourceService = mallResourceService; + this.aliyunOSS = aliyunOSS; + String configPath = uEditorConfig.getConfig(); + configPath = configPath == null || configPath.isEmpty() ? configFileName : configPath; + this.initEnv(configPath); + } + + /** + * 配置管理器构造工厂 + * + * @param uEditorConfig 配置文件 + * @return 配置管理器实例或者null + */ + public static com.iformall.ueditor.ConfigManager getInstance(UEditorConfig uEditorConfig, AwsProperty awsProperty, MallResourceService mallResourceService, AliyunOSS aliyunOSS) { + + try { + return new com.iformall.ueditor.ConfigManager(uEditorConfig, awsProperty, mallResourceService, aliyunOSS); + } catch (Exception e) { + System.err.println("UEditor ConfigManager load error~"); + return null; + } + + } + + public AliyunOSS getAliyunOSS() { + return aliyunOSS; + } + + public void setAliyunOSS(AliyunOSS aliyunOSS) { + this.aliyunOSS = aliyunOSS; + } + + public MallResourceService getMallResourceService() { + return mallResourceService; + } + + public void setMallResourceService(MallResourceService mallResourceService) { + this.mallResourceService = mallResourceService; + } + + // 验证配置文件加载是否正确 + public boolean valid() { + return this.jsonConfig != null; + } + + public JSONObject getAllConfig() { + + return this.jsonConfig; + + } + + public Map getConfig(int type) { + + Map conf = new HashMap(); + String savePath = null; + + try { + switch (type) { + + case ActionMap.UPLOAD_FILE: + conf.put("isBase64", "false"); + conf.put("maxSize", this.jsonConfig.getLong("fileMaxSize")); + conf.put("allowFiles", this.getArray("fileAllowFiles")); + conf.put("fieldName", this.jsonConfig.getString("fileFieldName")); + conf.put("clientRegion", this.awsProperty.getClientRegion()); + conf.put("bucketName", this.awsProperty.getBucketName()); + conf.put("access", this.awsProperty.getAccess()); + conf.put("secret", this.awsProperty.getSecret()); + savePath = this.jsonConfig.getString("filePathFormat"); + break; + + case ActionMap.UPLOAD_IMAGE: + conf.put("isBase64", "false"); + conf.put("maxSize", this.jsonConfig.getLong("imageMaxSize")); + conf.put("allowFiles", this.getArray("imageAllowFiles")); + conf.put("fieldName", this.jsonConfig.getString("imageFieldName")); + conf.put("clientRegion", this.awsProperty.getClientRegion()); + conf.put("bucketName", this.awsProperty.getBucketName()); + conf.put("access", this.awsProperty.getAccess()); + conf.put("secret", this.awsProperty.getSecret()); + savePath = this.jsonConfig.getString("imagePathFormat"); + break; + + case ActionMap.UPLOAD_VIDEO: + conf.put("maxSize", this.jsonConfig.getLong("videoMaxSize")); + conf.put("allowFiles", this.getArray("videoAllowFiles")); + conf.put("fieldName", this.jsonConfig.getString("videoFieldName")); + conf.put("clientRegion", this.awsProperty.getClientRegion()); + conf.put("bucketName", this.awsProperty.getBucketName()); + conf.put("access", this.awsProperty.getAccess()); + conf.put("secret", this.awsProperty.getSecret()); + savePath = this.jsonConfig.getString("videoPathFormat"); + break; + + case ActionMap.UPLOAD_SCRAWL: + conf.put("filename", com.iformall.ueditor.ConfigManager.SCRAWL_FILE_NAME); + conf.put("maxSize", this.jsonConfig.getLong("scrawlMaxSize")); + conf.put("fieldName", this.jsonConfig.getString("scrawlFieldName")); + conf.put("isBase64", "true"); + savePath = this.jsonConfig.getString("scrawlPathFormat"); + break; + + case ActionMap.CATCH_IMAGE: + conf.put("filename", com.iformall.ueditor.ConfigManager.REMOTE_FILE_NAME); + conf.put("filter", this.getArray("catcherLocalDomain")); + conf.put("maxSize", this.jsonConfig.getLong("catcherMaxSize")); + conf.put("allowFiles", this.getArray("catcherAllowFiles")); + conf.put("fieldName", this.jsonConfig.getString("catcherFieldName") + "[]"); + savePath = this.jsonConfig.getString("catcherPathFormat"); + break; + + case ActionMap.LIST_IMAGE: + conf.put("allowFiles", this.getArray("imageManagerAllowFiles")); + conf.put("dir", this.jsonConfig.getString("imageManagerListPath")); + conf.put("count", this.jsonConfig.getIntValue("imageManagerListSize")); + break; + + case ActionMap.LIST_FILE: + conf.put("allowFiles", this.getArray("fileManagerAllowFiles")); + conf.put("dir", this.jsonConfig.getString("fileManagerListPath")); + conf.put("count", this.jsonConfig.getIntValue("fileManagerListSize")); + break; + + } + } catch (JSONException e) { + e.printStackTrace(); + } + + conf.put("savePath", savePath); + conf.put("rootPath", uEditorConfig.getUploadPath()); + conf.put("urlPrefix", uEditorConfig.getUrlPrefix()); + return conf; + + } + + private void initEnv(String configPath) throws IOException { + + String configContent = this.readFile(configPath); + + try { + JSONObject jsonConfig = JSON.parseObject(configContent); + //统一url访问前缀 + if (uEditorConfig.getUnified()) { + Set> entrySet = jsonConfig.entrySet(); + for (Map.Entry entry : entrySet) { + String key = entry.getKey(); + if(key.contains("UrlPrefix")) { + jsonConfig.put(key, uEditorConfig.getUrlPrefix()); + } + } + } + this.jsonConfig = jsonConfig; + } catch (Exception e) { + this.jsonConfig = null; + } + + } + + private String[] getArray(String key) throws JSONException { + + JSONArray jsonArray = this.jsonConfig.getJSONArray(key); + String[] result = new String[jsonArray.size()]; + + for (int i = 0, len = jsonArray.size(); i < len; i++) { + result[i] = jsonArray.getString(i); + } + + return result; + + } + + private String readFile(String path) throws IOException { + + StringBuilder builder = new StringBuilder(); + + try { + InputStream inputStream = getClass().getClassLoader().getResourceAsStream(path); + InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8"); + BufferedReader bfReader = new BufferedReader(reader); + + String tmpContent = null; + + while ((tmpContent = bfReader.readLine()) != null) { + builder.append(tmpContent); + } + + bfReader.close(); + + } catch (UnsupportedEncodingException e) { + // 忽略 + } + + return this.filter(builder.toString()); + + } + + // 过滤输入字符串, 剔除多行注释以及替换掉反斜杠 + private String filter(String input) { + + return input.replaceAll("/\\*[\\s\\S]*?\\*/", ""); + + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java new file mode 100644 index 000000000..701b56801 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java @@ -0,0 +1,24 @@ +package com.iformall.controller.ueditor; + +public class Encoder { + + public static String toUnicode ( String input ) { + + StringBuilder builder = new StringBuilder(); + char[] chars = input.toCharArray(); + + for ( char ch : chars ) { + + if ( ch < 256 ) { + builder.append( ch ); + } else { + builder.append( "\\u" + Integer.toHexString( ch& 0xffff ) ); + } + + } + + return builder.toString(); + + } + +} \ No newline at end of file diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java new file mode 100644 index 000000000..c1dc778f1 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java @@ -0,0 +1,157 @@ +package com.iformall.controller.ueditor; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PathFormat { + + private static final String TIME = "time"; + private static final String FULL_YEAR = "yyyy"; + private static final String YEAR = "yy"; + private static final String MONTH = "mm"; + private static final String DAY = "dd"; + private static final String HOUR = "hh"; + private static final String MINUTE = "ii"; + private static final String SECOND = "ss"; + private static final String RAND = "rand"; + + private static Date currentDate = null; + + public static String parse ( String input ) { + + Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE ); + Matcher matcher = pattern.matcher(input); + + com.iformall.ueditor.PathFormat.currentDate = new Date(); + + StringBuffer sb = new StringBuffer(); + + while ( matcher.find() ) { + + matcher.appendReplacement(sb, com.iformall.ueditor.PathFormat.getString( matcher.group( 1 ) ) ); + + } + + matcher.appendTail(sb); + + return sb.toString(); + } + + /** + * 格式化路径, 把windows路径替换成标准路径 + * @param input 待格式化的路径 + * @return 格式化后的路径 + */ + public static String format ( String input ) { + + return input.replace( "\\", "/" ); + + } + + public static String parse ( String input, String filename ) { + + Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE ); + Matcher matcher = pattern.matcher(input); + String matchStr = null; + + com.iformall.ueditor.PathFormat.currentDate = new Date(); + + StringBuffer sb = new StringBuffer(); + + while ( matcher.find() ) { + + matchStr = matcher.group( 1 ); + if ( matchStr.indexOf( "filename" ) != -1 ) { + filename = filename.replace( "$", "\\$" ).replaceAll( "[\\/:*?\"<>|]", "" ); + matcher.appendReplacement(sb, filename ); + } else { + matcher.appendReplacement(sb, com.iformall.ueditor.PathFormat.getString( matchStr ) ); + } + + } + + matcher.appendTail(sb); + + return sb.toString(); + } + + private static String getString ( String pattern ) { + + pattern = pattern.toLowerCase(); + + // time 处理 + if ( pattern.indexOf( com.iformall.ueditor.PathFormat.TIME ) != -1 ) { + return com.iformall.ueditor.PathFormat.getTimestamp(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.FULL_YEAR ) != -1 ) { + return com.iformall.ueditor.PathFormat.getFullYear(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.YEAR ) != -1 ) { + return com.iformall.ueditor.PathFormat.getYear(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.MONTH ) != -1 ) { + return com.iformall.ueditor.PathFormat.getMonth(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.DAY ) != -1 ) { + return com.iformall.ueditor.PathFormat.getDay(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.HOUR ) != -1 ) { + return com.iformall.ueditor.PathFormat.getHour(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.MINUTE ) != -1 ) { + return com.iformall.ueditor.PathFormat.getMinute(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.SECOND ) != -1 ) { + return com.iformall.ueditor.PathFormat.getSecond(); + } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.RAND ) != -1 ) { + return com.iformall.ueditor.PathFormat.getRandom( pattern ); + } + + return pattern; + + } + + private static String getTimestamp () { + return System.currentTimeMillis() + ""; + } + + private static String getFullYear () { + return new SimpleDateFormat( "yyyy" ).format( com.iformall.ueditor.PathFormat.currentDate ); + } + + private static String getYear () { + return new SimpleDateFormat( "yy" ).format( com.iformall.ueditor.PathFormat.currentDate ); + } + + private static String getMonth () { + return new SimpleDateFormat( "MM" ).format( com.iformall.ueditor.PathFormat.currentDate ); + } + + private static String getDay () { + return new SimpleDateFormat( "dd" ).format( com.iformall.ueditor.PathFormat.currentDate ); + } + + private static String getHour () { + return new SimpleDateFormat( "HH" ).format( com.iformall.ueditor.PathFormat.currentDate ); + } + + private static String getMinute () { + return new SimpleDateFormat( "mm" ).format( com.iformall.ueditor.PathFormat.currentDate ); + } + + private static String getSecond () { + return new SimpleDateFormat( "ss" ).format( com.iformall.ueditor.PathFormat.currentDate ); + } + + private static String getRandom ( String pattern ) { + + int length = 0; + pattern = pattern.split( ":" )[ 1 ].trim(); + + length = Integer.parseInt( pattern ); + + return ( Math.random() + "" ).replace( ".", "" ).substring( 0, length ); + + } + + public static void main(String[] args) { + // TODO Auto-generated method stub + + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java new file mode 100644 index 000000000..f60b43942 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java @@ -0,0 +1,59 @@ +package com.iformall.controller.ueditor; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Created by pangxiaofeng on 2017/9/27. + */ +@ConfigurationProperties(prefix = "ueditor") +public class UEditorConfig { + + /** + * config.json的文件存放地址 + */ + private String config; + /** + * 是否同统一上传地址:图片上传地址,视频上传地址... + */ + private boolean unified; + /** + * 文件上传路径 + */ + private String uploadPath; + /** + * 文件url前缀 + */ + private String urlPrefix; + + public String getConfig() { + return config; + } + + public void setConfig(String config) { + this.config = config; + } + + public String getUploadPath() { + return uploadPath; + } + + public void setUploadPath(String uploadPath) { + this.uploadPath = uploadPath; + } + + public String getUrlPrefix() { + return urlPrefix; + } + + public void setUrlPrefix(String urlPrefix) { + this.urlPrefix = urlPrefix; + } + + public boolean getUnified() { + return unified; + } + + public void setUnified(boolean unified) { + this.unified = unified; + } +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java new file mode 100644 index 000000000..001213a1b --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java @@ -0,0 +1,42 @@ +package com.iformall.controller.ueditor.define; + +import java.util.HashMap; +import java.util.Map; + +/** + * 定义请求action类型 + * @author hancong03@baidu.com + * + */ +@SuppressWarnings("serial") +public final class ActionMap { + + public static final Map mapping; + // 获取配置请求 + public static final int CONFIG = 0; + public static final int UPLOAD_IMAGE = 1; + public static final int UPLOAD_SCRAWL = 2; + public static final int UPLOAD_VIDEO = 3; + public static final int UPLOAD_FILE = 4; + public static final int CATCH_IMAGE = 5; + public static final int LIST_FILE = 6; + public static final int LIST_IMAGE = 7; + + static { + mapping = new HashMap(){{ + put( "config", com.iformall.ueditor.define.ActionMap.CONFIG ); + put( "uploadimage", com.iformall.ueditor.define.ActionMap.UPLOAD_IMAGE ); + put( "uploadscrawl", com.iformall.ueditor.define.ActionMap.UPLOAD_SCRAWL ); + put( "uploadvideo", com.iformall.ueditor.define.ActionMap.UPLOAD_VIDEO ); + put( "uploadfile", com.iformall.ueditor.define.ActionMap.UPLOAD_FILE ); + put( "catchimage", com.iformall.ueditor.define.ActionMap.CATCH_IMAGE ); + put( "listfile", com.iformall.ueditor.define.ActionMap.LIST_FILE ); + put( "listimage", com.iformall.ueditor.define.ActionMap.LIST_IMAGE ); + }}; + } + + public static int getType ( String key ) { + return com.iformall.ueditor.define.ActionMap.mapping.get( key ); + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java new file mode 100644 index 000000000..59bf8e686 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java @@ -0,0 +1,5 @@ +package com.iformall.controller.ueditor.define; + +public enum ActionState { + UNKNOW_ERROR +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java new file mode 100644 index 000000000..77235c629 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java @@ -0,0 +1,77 @@ +package com.iformall.controller.ueditor.define; + +import java.util.HashMap; +import java.util.Map; + +public final class AppInfo { + + public static final int SUCCESS = 0; + public static final int MAX_SIZE = 1; + public static final int PERMISSION_DENIED = 2; + public static final int FAILED_CREATE_FILE = 3; + public static final int IO_ERROR = 4; + public static final int NOT_MULTIPART_CONTENT = 5; + public static final int PARSE_REQUEST_ERROR = 6; + public static final int NOTFOUND_UPLOAD_DATA = 7; + public static final int NOT_ALLOW_FILE_TYPE = 8; + + public static final int INVALID_ACTION = 101; + public static final int CONFIG_ERROR = 102; + + public static final int PREVENT_HOST = 201; + public static final int CONNECTION_ERROR = 202; + public static final int REMOTE_FAIL = 203; + + public static final int NOT_DIRECTORY = 301; + public static final int NOT_EXIST = 302; + + public static final int ILLEGAL = 401; + + public static Map info = new HashMap(){{ + + put( com.iformall.ueditor.define.AppInfo.SUCCESS, "SUCCESS" ); + + // 无效的Action + put( com.iformall.ueditor.define.AppInfo.INVALID_ACTION, "\u65E0\u6548\u7684Action" ); + // 配置文件初始化失败 + put( com.iformall.ueditor.define.AppInfo.CONFIG_ERROR, "\u914D\u7F6E\u6587\u4EF6\u521D\u59CB\u5316\u5931\u8D25" ); + // 抓取远程图片失败 + put( com.iformall.ueditor.define.AppInfo.REMOTE_FAIL, "\u6293\u53D6\u8FDC\u7A0B\u56FE\u7247\u5931\u8D25" ); + + // 被阻止的远程主机 + put( com.iformall.ueditor.define.AppInfo.PREVENT_HOST, "\u88AB\u963B\u6B62\u7684\u8FDC\u7A0B\u4E3B\u673A" ); + // 远程连接出错 + put( com.iformall.ueditor.define.AppInfo.CONNECTION_ERROR, "\u8FDC\u7A0B\u8FDE\u63A5\u51FA\u9519" ); + + // "文件大小超出限制" + put( com.iformall.ueditor.define.AppInfo.MAX_SIZE, "\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236" ); + // 权限不足, 多指写权限 + put( com.iformall.ueditor.define.AppInfo.PERMISSION_DENIED, "\u6743\u9650\u4E0D\u8DB3" ); + // 创建文件失败 + put( com.iformall.ueditor.define.AppInfo.FAILED_CREATE_FILE, "\u521B\u5EFA\u6587\u4EF6\u5931\u8D25" ); + // IO错误 + put( com.iformall.ueditor.define.AppInfo.IO_ERROR, "IO\u9519\u8BEF" ); + // 上传表单不是multipart/form-data类型 + put( com.iformall.ueditor.define.AppInfo.NOT_MULTIPART_CONTENT, "\u4E0A\u4F20\u8868\u5355\u4E0D\u662Fmultipart/form-data\u7C7B\u578B" ); + // 解析上传表单错误 + put( com.iformall.ueditor.define.AppInfo.PARSE_REQUEST_ERROR, "\u89E3\u6790\u4E0A\u4F20\u8868\u5355\u9519\u8BEF" ); + // 未找到上传数据 + put( com.iformall.ueditor.define.AppInfo.NOTFOUND_UPLOAD_DATA, "\u672A\u627E\u5230\u4E0A\u4F20\u6570\u636E" ); + // 不允许的文件类型 + put( com.iformall.ueditor.define.AppInfo.NOT_ALLOW_FILE_TYPE, "\u4E0D\u5141\u8BB8\u7684\u6587\u4EF6\u7C7B\u578B" ); + + // 指定路径不是目录 + put( com.iformall.ueditor.define.AppInfo.NOT_DIRECTORY, "\u6307\u5B9A\u8DEF\u5F84\u4E0D\u662F\u76EE\u5F55" ); + // 指定路径并不存在 + put( com.iformall.ueditor.define.AppInfo.NOT_EXIST, "\u6307\u5B9A\u8DEF\u5F84\u5E76\u4E0D\u5B58\u5728" ); + + // callback参数名不合法 + put( com.iformall.ueditor.define.AppInfo.ILLEGAL, "Callback\u53C2\u6570\u540D\u4E0D\u5408\u6CD5" ); + + }}; + + public static String getStateInfo ( int key ) { + return com.iformall.ueditor.define.AppInfo.info.get( key ); + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java new file mode 100644 index 000000000..fbf6703e7 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java @@ -0,0 +1,92 @@ +package com.iformall.controller.ueditor.define; + +import com.iformall.ueditor.Encoder; +import com.iformall.ueditor.define.AppInfo; +import com.iformall.ueditor.define.State; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public class BaseState implements State { + + private boolean state = false; + private String info = null; + + private Map infoMap = new HashMap(); + + public BaseState () { + this.state = true; + } + + public BaseState ( boolean state ) { + this.setState( state ); + } + + public BaseState ( boolean state, String info ) { + this.setState( state ); + this.info = info; + } + + public BaseState ( boolean state, int infoCode ) { + this.setState( state ); + this.info = AppInfo.getStateInfo( infoCode ); + } + + public boolean isSuccess () { + return this.state; + } + + public void setState ( boolean state ) { + this.state = state; + } + + public void setInfo ( String info ) { + this.info = info; + } + + public void setInfo ( int infoCode ) { + this.info = AppInfo.getStateInfo( infoCode ); + } + + @Override + public String toJSONString() { + return this.toString(); + } + + public String toString () { + + String key = null; + String stateVal = this.isSuccess() ? AppInfo.getStateInfo( AppInfo.SUCCESS ) : this.info; + + StringBuilder builder = new StringBuilder(); + + builder.append( "{\"state\": \"" + stateVal + "\"" ); + + Iterator iterator = this.infoMap.keySet().iterator(); + + while ( iterator.hasNext() ) { + + key = iterator.next(); + + builder.append( ",\"" + key + "\": \"" + this.infoMap.get(key) + "\"" ); + + } + + builder.append( "}" ); + + return Encoder.toUnicode( builder.toString() ); + + } + + @Override + public void putInfo(String name, String val) { + this.infoMap.put(name, val); + } + + @Override + public void putInfo(String name, long val) { + this.putInfo(name, val+""); + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java new file mode 100644 index 000000000..4cfbae204 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java @@ -0,0 +1,31 @@ +package com.iformall.controller.ueditor.define; + +import java.util.HashMap; +import java.util.Map; + +public class FileType { + + public static final String JPG = "JPG"; + + private static final Map types = new HashMap(){{ + + put( com.iformall.ueditor.define.FileType.JPG, ".jpg" ); + + }}; + + public static String getSuffix ( String key ) { + return com.iformall.ueditor.define.FileType.types.get( key ); + } + + /** + * 根据给定的文件名,获取其后缀信息 + * @param filename + * @return + */ + public static String getSuffixByFilename ( String filename ) { + + return filename.substring( filename.lastIndexOf( "." ) ).toLowerCase(); + + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java new file mode 100644 index 000000000..70614f65d --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java @@ -0,0 +1,20 @@ +package com.iformall.controller.ueditor.define; + +import java.util.HashMap; +import java.util.Map; + +public class MIMEType { + + public static final Map types = new HashMap(){{ + put( "image/gif", ".gif" ); + put( "image/jpeg", ".jpg" ); + put( "image/jpg", ".jpg" ); + put( "image/png", ".png" ); + put( "image/bmp", ".bmp" ); + }}; + + public static String getSuffix ( String mime ) { + return com.iformall.ueditor.define.MIMEType.types.get( mime ); + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java new file mode 100644 index 000000000..8ecf4e972 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java @@ -0,0 +1,110 @@ +package com.iformall.controller.ueditor.define; + +import com.iformall.ueditor.Encoder; +import com.iformall.ueditor.define.AppInfo; +import com.iformall.ueditor.define.State; + +import java.util.*; + +/** + * 多状态集合状态 + * 其包含了多个状态的集合, 其本身自己也是一个状态 + * @author hancong03@baidu.com + * + */ +public class MultiState implements State { + + private boolean state = false; + private String info = null; + private Map intMap = new HashMap(); + private Map infoMap = new HashMap(); + private List stateList = new ArrayList(); + + public MultiState ( boolean state ) { + this.state = state; + } + + public MultiState ( boolean state, String info ) { + this.state = state; + this.info = info; + } + + public MultiState ( boolean state, int infoKey ) { + this.state = state; + this.info = AppInfo.getStateInfo( infoKey ); + } + + @Override + public boolean isSuccess() { + return this.state; + } + + public void addState ( State state ) { + stateList.add( state.toJSONString() ); + } + + /** + * 该方法调用无效果 + */ + @Override + public void putInfo(String name, String val) { + this.infoMap.put(name, val); + } + + @Override + public String toJSONString() { + + String stateVal = this.isSuccess() ? AppInfo.getStateInfo( AppInfo.SUCCESS ) : this.info; + + StringBuilder builder = new StringBuilder(); + + builder.append( "{\"state\": \"" + stateVal + "\"" ); + + // 数字转换 + Iterator iterator = this.intMap.keySet().iterator(); + + while ( iterator.hasNext() ) { + + stateVal = iterator.next(); + + builder.append( ",\""+ stateVal +"\": " + this.intMap.get( stateVal ) ); + + } + + iterator = this.infoMap.keySet().iterator(); + + while ( iterator.hasNext() ) { + + stateVal = iterator.next(); + + builder.append( ",\""+ stateVal +"\": \"" + this.infoMap.get( stateVal ) + "\"" ); + + } + + builder.append( ", list: [" ); + + + iterator = this.stateList.iterator(); + + while ( iterator.hasNext() ) { + + builder.append( iterator.next() + "," ); + + } + + if ( this.stateList.size() > 0 ) { + builder.deleteCharAt( builder.length() - 1 ); + } + + builder.append( " ]}" ); + + return Encoder.toUnicode( builder.toString() ); + + } + + @Override + public void putInfo(String name, long val) { + this.intMap.put( name, val ); + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java new file mode 100644 index 000000000..263c73c8a --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java @@ -0,0 +1,18 @@ +package com.iformall.controller.ueditor.define; + +/** + * 处理状态接口 + * @author hancong03@baidu.com + * + */ +public interface State { + + public boolean isSuccess(); + + public void putInfo(String name, String val); + + public void putInfo(String name, long val); + + public String toJSONString(); + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java new file mode 100644 index 000000000..e1e7a2e28 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java @@ -0,0 +1,111 @@ +package com.iformall.controller.ueditor.hunter; + +import com.iformall.ueditor.PathFormat; +import com.iformall.ueditor.define.AppInfo; +import com.iformall.ueditor.define.BaseState; +import com.iformall.ueditor.define.MultiState; +import com.iformall.ueditor.define.State; +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; + +public class FileManager { + + private String dir = null; + private String rootPath = null; + private String[] allowFiles = null; + private int count = 0; + + public FileManager(Map conf) { + + this.rootPath = (String) conf.get("rootPath"); + this.dir = this.rootPath + (String) conf.get("dir"); + this.allowFiles = this.getAllowFiles(conf.get("allowFiles")); + this.count = (Integer) conf.get("count"); + + } + + public State listFile(int index) { + + File dir = new File(this.dir); + State state = null; + + if (!dir.exists()) { + return new BaseState(false, AppInfo.NOT_EXIST); + } + + if (!dir.isDirectory()) { + return new BaseState(false, AppInfo.NOT_DIRECTORY); + } + + Collection list = FileUtils.listFiles(dir, this.allowFiles, true); + + if (index < 0 || index > list.size()) { + state = new MultiState(true); + } else { + Object[] fileList = Arrays.copyOfRange(list.toArray(), index, index + this.count); + state = this.getState(fileList); + } + + state.putInfo("start", index); + state.putInfo("total", list.size()); + + return state; + + } + + private State getState(Object[] files) { + + MultiState state = new MultiState(true); + BaseState fileState = null; + + File file = null; + + for (Object obj : files) { + if (obj == null) { + break; + } + file = (File) obj; + fileState = new BaseState(true); + fileState.putInfo("url", PathFormat.format(this.getPath(file))); + state.addState(fileState); + } + + return state; + + } + + private String getPath(File file) { + + String path = file.getAbsolutePath(); + path = PathFormat.format(path); + return path.replace(this.rootPath, "/"); + + } + + private String[] getAllowFiles(Object fileExt) { + + String[] exts = null; + String ext = null; + + if (fileExt == null) { + return new String[0]; + } + + exts = (String[]) fileExt; + + for (int i = 0, len = exts.length; i < len; i++) { + + ext = exts[i]; + exts[i] = ext.replace(".", ""); + + } + + return exts; + + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java new file mode 100644 index 000000000..5793c8d38 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java @@ -0,0 +1,140 @@ +package com.iformall.controller.ueditor.hunter; + +import com.iformall.ueditor.PathFormat; +import com.iformall.ueditor.define.*; +import com.iformall.ueditor.upload.StorageManager; + +import java.net.HttpURLConnection; +import java.net.InetAddress; +import java.net.URL; +import java.net.UnknownHostException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 图片抓取器 + * @author hancong03@baidu.com + * + */ +public class ImageHunter { + + private String filename = null; + private String savePath = null; + private String rootPath = null; + private List allowTypes = null; + private long maxSize = -1; + + private List filters = null; + + public ImageHunter ( Map conf ) { + + this.filename = (String)conf.get( "filename" ); + this.savePath = (String)conf.get( "savePath" ); + this.rootPath = (String)conf.get( "rootPath" ); + this.maxSize = (Long)conf.get( "maxSize" ); + this.allowTypes = Arrays.asList( (String[])conf.get( "allowFiles" ) ); + this.filters = Arrays.asList( (String[])conf.get( "filter" ) ); + + } + + public State capture (String[] list ) { + + MultiState state = new MultiState( true ); + + for ( String source : list ) { + state.addState( captureRemoteData( source ) ); + } + + return state; + + } + + public State captureRemoteData ( String urlStr ) { + + HttpURLConnection connection = null; + URL url = null; + String suffix = null; + + try { + url = new URL( urlStr ); + + if ( !validHost( url.getHost() ) ) { + return new BaseState( false, AppInfo.PREVENT_HOST ); + } + + connection = (HttpURLConnection) url.openConnection(); + + connection.setInstanceFollowRedirects( true ); + connection.setUseCaches( true ); + + if ( !validContentState( connection.getResponseCode() ) ) { + return new BaseState( false, AppInfo.CONNECTION_ERROR ); + } + + suffix = MIMEType.getSuffix( connection.getContentType() ); + + if ( !validFileType( suffix ) ) { + return new BaseState( false, AppInfo.NOT_ALLOW_FILE_TYPE ); + } + + if ( !validFileSize( connection.getContentLength() ) ) { + return new BaseState( false, AppInfo.MAX_SIZE ); + } + + String savePath = this.getPath( this.savePath, this.filename, suffix ); + String physicalPath = this.rootPath + savePath; + + State state = StorageManager.saveFileByInputStream( connection.getInputStream(), physicalPath ); + + if ( state.isSuccess() ) { + state.putInfo( "url", PathFormat.format( savePath ) ); + state.putInfo( "source", urlStr ); + } + + return state; + + } catch ( Exception e ) { + return new BaseState( false, AppInfo.REMOTE_FAIL ); + } + + } + + private String getPath ( String savePath, String filename, String suffix ) { + + return PathFormat.parse( savePath + suffix, filename ); + + } + + private boolean validHost ( String hostname ) { + try { + InetAddress ip = InetAddress.getByName(hostname); + + if (ip.isSiteLocalAddress()) { + return false; + } + } catch (UnknownHostException e) { + return false; + } + + return !filters.contains( hostname ); + + } + + private boolean validContentState ( int code ) { + + return HttpURLConnection.HTTP_OK == code; + + } + + private boolean validFileType ( String type ) { + + return this.allowTypes.contains( type ); + + } + + private boolean validFileSize ( int size ) { + return size < this.maxSize; + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java new file mode 100644 index 000000000..43854fdb7 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java @@ -0,0 +1,52 @@ +package com.iformall.controller.ueditor.upload; + +import com.iformall.ueditor.PathFormat; +import com.iformall.ueditor.define.AppInfo; +import com.iformall.ueditor.define.BaseState; +import com.iformall.ueditor.define.FileType; +import com.iformall.ueditor.define.State; +import com.iformall.ueditor.upload.StorageManager; +import org.apache.commons.codec.binary.Base64; + +import java.util.Map; + +public final class Base64Uploader { + + public static State save(String content, Map conf) { + + byte[] data = decode(content); + + long maxSize = ((Long) conf.get("maxSize")).longValue(); + + if (!validSize(data, maxSize)) { + return new BaseState(false, AppInfo.MAX_SIZE); + } + + String suffix = FileType.getSuffix("JPG"); + + String savePath = PathFormat.parse((String) conf.get("savePath"), + (String) conf.get("filename")); + + savePath = savePath + suffix; + String physicalPath = (String) conf.get("rootPath") + savePath; + + State storageState = StorageManager.saveBinaryFile(data, physicalPath); + + if (storageState.isSuccess()) { + storageState.putInfo("url", PathFormat.format(savePath)); + storageState.putInfo("type", suffix); + storageState.putInfo("original", ""); + } + + return storageState; + } + + private static byte[] decode(String content) { + return Base64.decodeBase64(content); + } + + private static boolean validSize(byte[] data, long length) { + return data.length <= length; + } + +} \ No newline at end of file diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java new file mode 100644 index 000000000..79bd28c0c --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java @@ -0,0 +1,71 @@ +package com.iformall.controller.ueditor.upload; + +import com.iformall.ueditor.PathFormat; +import com.iformall.ueditor.define.AppInfo; +import com.iformall.ueditor.define.BaseState; +import com.iformall.ueditor.define.FileType; +import com.iformall.ueditor.define.State; +import com.iformall.ueditor.upload.StorageManager; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class BinaryUploader { + + public static final State save(HttpServletRequest request, Map conf) { + if (!ServletFileUpload.isMultipartContent(request)) { + return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT); + } + + MultipartFile file = ((MultipartHttpServletRequest) request).getFile("upfile"); + try { + if (file == null) { + return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA); + } + + String savePath = (String) conf.get("savePath"); + String originFileName = file.getOriginalFilename(); + String suffix = FileType.getSuffixByFilename(file.getOriginalFilename()); + + originFileName = originFileName.substring(0, + originFileName.length() - suffix.length()); + savePath = savePath + suffix; + + long maxSize = ((Long) conf.get("maxSize")).longValue(); + + if (!validType(suffix, (String[]) conf.get("allowFiles"))) { + return new BaseState(false, AppInfo.NOT_ALLOW_FILE_TYPE); + } + + savePath = PathFormat.parse(savePath, originFileName); + String physicalPath = (String) conf.get("rootPath") + savePath; + + InputStream is = file.getInputStream(); + State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize); + is.close(); + + if (storageState.isSuccess()) { + storageState.putInfo("url", PathFormat.format(savePath)); + storageState.putInfo("local", physicalPath); + storageState.putInfo("type", suffix); + storageState.putInfo("original", originFileName + suffix); + } + return storageState; + } catch (IOException e) { + } + return new BaseState(false, AppInfo.IO_ERROR); + } + + private static boolean validType(String type, String[] allowTypes) { + List list = Arrays.asList(allowTypes); + + return list.contains(type); + } +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java new file mode 100644 index 000000000..f000d80aa --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java @@ -0,0 +1,148 @@ +package com.iformall.controller.ueditor.upload; + +import com.iformall.ueditor.define.AppInfo; +import com.iformall.ueditor.define.BaseState; +import com.iformall.ueditor.define.State; +import org.apache.commons.io.FileUtils; + +import java.io.*; + +public class StorageManager { + public static final int BUFFER_SIZE = 8192; + + public StorageManager() { + } + + public static State saveBinaryFile(byte[] data, String path) { + File file = new File(path); + + State state = valid(file); + + if (!state.isSuccess()) { + return state; + } + + try { + BufferedOutputStream bos = new BufferedOutputStream( + new FileOutputStream(file)); + bos.write(data); + bos.flush(); + bos.close(); + } catch (IOException ioe) { + return new BaseState(false, AppInfo.IO_ERROR); + } + + state = new BaseState(true, file.getAbsolutePath()); + state.putInfo("size", data.length); + state.putInfo("title", file.getName()); + return state; + } + + public static State saveFileByInputStream(InputStream is, String path, long maxSize) { + State state = null; + + File tmpFile = getTmpFile(); + + byte[] dataBuf = new byte[2048]; + BufferedInputStream bis = new BufferedInputStream(is, com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); + + try { + BufferedOutputStream bos = new BufferedOutputStream( + new FileOutputStream(tmpFile), com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); + + int count = 0; + while ((count = bis.read(dataBuf)) != -1) { + bos.write(dataBuf, 0, count); + } + bos.flush(); + bos.close(); + + if (tmpFile.length() > maxSize) { + tmpFile.delete(); + return new BaseState(false, AppInfo.MAX_SIZE); + } + + state = saveTmpFile(tmpFile, path); + + if (!state.isSuccess()) { + tmpFile.delete(); + } + + return state; + + } catch (IOException e) { + } + return new BaseState(false, AppInfo.IO_ERROR); + } + + public static State saveFileByInputStream(InputStream is, String path) { + State state = null; + + File tmpFile = getTmpFile(); + + byte[] dataBuf = new byte[2048]; + BufferedInputStream bis = new BufferedInputStream(is, com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); + + try { + BufferedOutputStream bos = new BufferedOutputStream( + new FileOutputStream(tmpFile), com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); + + int count = 0; + while ((count = bis.read(dataBuf)) != -1) { + bos.write(dataBuf, 0, count); + } + bos.flush(); + bos.close(); + + state = saveTmpFile(tmpFile, path); + + if (!state.isSuccess()) { + tmpFile.delete(); + } + + return state; + } catch (IOException e) { + } + return new BaseState(false, AppInfo.IO_ERROR); + } + + private static File getTmpFile() { + File tmpDir = FileUtils.getTempDirectory(); + String tmpFileName = (Math.random() * 10000 + "").replace(".", ""); + return new File(tmpDir, tmpFileName); + } + + private static State saveTmpFile(File tmpFile, String path) { + State state = null; + File targetFile = new File(path); + + if (targetFile.canWrite()) { + return new BaseState(false, AppInfo.PERMISSION_DENIED); + } + try { + FileUtils.moveFile(tmpFile, targetFile); + } catch (IOException e) { + return new BaseState(false, AppInfo.IO_ERROR); + } + + state = new BaseState(true); + state.putInfo("size", targetFile.length()); + state.putInfo("title", targetFile.getName()); + + return state; + } + + private static State valid(File file) { + File parentPath = file.getParentFile(); + + if ((!parentPath.exists()) && (!parentPath.mkdirs())) { + return new BaseState(false, AppInfo.FAILED_CREATE_FILE); + } + + if (!parentPath.canWrite()) { + return new BaseState(false, AppInfo.PERMISSION_DENIED); + } + + return new BaseState(true); + } +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java new file mode 100644 index 000000000..693e0c312 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java @@ -0,0 +1,93 @@ +package com.iformall.controller.ueditor.upload; + +import com.iformall.common.ResultData; +import com.iformall.domain.po.MallResource; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.file.aliyun.AliyunOSS; +import com.iformall.service.MallResourceService; +import com.iformall.shiro.UserSession; +import com.iformall.ueditor.define.BaseState; +import com.iformall.ueditor.define.State; +import com.iformall.ueditor.upload.Base64Uploader; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.session.Session; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.Map; + +public class Uploader { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + private HttpServletRequest request = null; + private Map conf = null; + private MallResourceService mallResourceService = null; + + private AliyunOSS aliyunOSS; + + public Uploader(HttpServletRequest request, Map conf, MallResourceService mallResourceService, AliyunOSS aliyunOSS) { + this.request = request; + this.conf = conf; + this.mallResourceService = mallResourceService; + this.aliyunOSS = aliyunOSS; + } + + public final State doExec() { + String filedName = (String) this.conf.get("fieldName"); + State state = null; + + if ("true".equals(this.conf.get("isBase64"))) { + state = Base64Uploader.save(this.request.getParameter(filedName), + this.conf); + } else { + MultipartFile multiReq= ((MultipartHttpServletRequest) this.request).getFile("upfile"); + Session session = SecurityUtils.getSubject().getSession(); + String tenantId = (String)session.getAttribute(UserSession.tenantId); + String parentTenantId = (String)session.getAttribute(UserSession.parentTenantId); + if(StringUtils.isBlank(tenantId)){ + tenantId = parentTenantId; + parentTenantId = ""; + } + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.setTenantId(tenantId); + tenantEntity.setParentTenantId(parentTenantId); + if (StringUtils.isBlank(tenantId)) { + logger.error("TENANT is null"); + } + + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + + state = new BaseState(true); + state.putInfo("size", multiReq.getSize()); + state.putInfo("title", filedName); + + try { + + ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); + Map map = (Map) data.data; + state.putInfo("url",map.get("url")); + + MallResource mr = new MallResource(); + mr.updateTenantInfo(tenantEntity); + mr.setBucket(map.get("bucketName")); + mr.setUrl(map.get("url")); + + mallResourceService.saveOrUpdate(mr); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + + return state; + } +} diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index 97728a180..fb8a505b2 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -50,7 +50,6 @@ public class AliyunVideoExcutor implements VideoExcutor { UploadVideoResponse response =AliyunVedioUpload.uploadVideo(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, localFile,redisTemplate); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); - setVideUploadResult(result,response.getVideoId()); result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); result.setSuccess(true); }else { @@ -92,7 +91,8 @@ public class AliyunVideoExcutor implements VideoExcutor { log.info(response.toString()); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); - result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); + setVideUploadResult(result,response.getVideoId()); +// result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); result.setSuccess(true); } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 result.setSuccess(false); From ddc1709c90c51b392f3a08489a317b4c3b0179a2 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 17:05:13 +0800 Subject: [PATCH 08/29] tt --- .../controller/video/VideoController.java | 5 +- .../java/com/iformall/utils/UrlCheck.java | 3 +- .../controller/ueditor/ActionEnter.java | 120 --------- .../controller/ueditor/ConfigManager.java | 246 ------------------ .../iformall/controller/ueditor/Encoder.java | 24 -- .../controller/ueditor/PathFormat.java | 157 ----------- .../controller/ueditor/UEditorConfig.java | 59 ----- .../controller/ueditor/define/ActionMap.java | 42 --- .../ueditor/define/ActionState.java | 5 - .../controller/ueditor/define/AppInfo.java | 77 ------ .../controller/ueditor/define/BaseState.java | 92 ------- .../controller/ueditor/define/FileType.java | 31 --- .../controller/ueditor/define/MIMEType.java | 20 -- .../controller/ueditor/define/MultiState.java | 110 -------- .../controller/ueditor/define/State.java | 18 -- .../ueditor/hunter/FileManager.java | 111 -------- .../ueditor/hunter/ImageHunter.java | 140 ---------- .../ueditor/upload/Base64Uploader.java | 52 ---- .../ueditor/upload/BinaryUploader.java | 71 ----- .../ueditor/upload/StorageManager.java | 148 ----------- .../controller/ueditor/upload/Uploader.java | 93 ------- .../controller/video/VideoController.java | 4 + .../video/aliyun/AliyunVideoExcutor.java | 1 - 23 files changed, 10 insertions(+), 1619 deletions(-) delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java delete mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java index b0002b065..06ccb64cd 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -77,7 +77,7 @@ public class VideoController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "title", value = "页数", dataType = "String", paramType = "query", required = true)}) public ResultData list(@ModelAttribute WxPropertyContract wxPropertyContract, String title) { - VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo("123123213", "/root/111.mp4"); + VideUploadResult result = videoFactory.getExcutor(videoType).uploadLocalVideo("123123213", "C:\\Users\\xiaohu\\Desktop\\111.mp4"); return new ResultData(result); } @@ -97,6 +97,9 @@ public class VideoController extends BaseController { String fileFormat = ""; if (dot >= 0) { fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + if(StringUtils.isNotBlank(title)){ + title = multiReq.getOriginalFilename().substring(0,dot); + } } if(!fileFormat.endsWith("mp4")){ return new ResultData(ErrorCode.PICTURE_ENDWIDTH_ERROR); diff --git a/mallinkAdmin/src/main/java/com/iformall/utils/UrlCheck.java b/mallinkAdmin/src/main/java/com/iformall/utils/UrlCheck.java index 868116aa7..3db1a7a23 100644 --- a/mallinkAdmin/src/main/java/com/iformall/utils/UrlCheck.java +++ b/mallinkAdmin/src/main/java/com/iformall/utils/UrlCheck.java @@ -22,7 +22,8 @@ public class UrlCheck { || url.contains("/kwMeter/import") || url.contains("/wxImportTemplate/importTemplate") || url.contains("/invest/customer/importCustomer") - || url.contains("/alipay/imageUpload"); + || url.contains("/alipay/imageUpload") + || url.contains("/video/upload"); } } diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java deleted file mode 100644 index 92a0dcc77..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ActionEnter.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.iformall.controller.ueditor; - -import com.iformall.ueditor.ConfigManager; -import com.iformall.ueditor.define.ActionMap; -import com.iformall.ueditor.define.AppInfo; -import com.iformall.ueditor.define.BaseState; -import com.iformall.ueditor.define.State; -import com.iformall.ueditor.hunter.FileManager; -import com.iformall.ueditor.hunter.ImageHunter; -import com.iformall.ueditor.upload.Uploader; - -import javax.servlet.http.HttpServletRequest; -import java.util.Map; - -public class ActionEnter { - - private HttpServletRequest request = null; - - private String actionType = null; - - private ConfigManager configManager = null; - - public ActionEnter(ConfigManager configManager) { - this.configManager = configManager; - } - - public Object exec(HttpServletRequest request) { - this.request = request; - this.actionType = request.getParameter("action"); - String callbackName = this.request.getParameter("callback"); - - if (callbackName != null) { - - if (!validCallbackName(callbackName)) { - return new BaseState(false, AppInfo.ILLEGAL).toJSONString(); - } - - //return callbackName + "(" + this.invoke() + ");"; - return this.invoke(); - - } else { - return this.invoke(); - } - - } - - public Object invoke() { - - if (actionType == null || !ActionMap.mapping.containsKey(actionType)) { - return new BaseState(false, AppInfo.INVALID_ACTION).toJSONString(); - } - - if (this.configManager == null || !this.configManager.valid()) { - return new BaseState(false, AppInfo.CONFIG_ERROR).toJSONString(); - } - - State state = null; - - int actionCode = ActionMap.getType(this.actionType); - - Map conf = null; - - switch (actionCode) { - - case ActionMap.CONFIG: - return this.configManager.getAllConfig(); - - case ActionMap.UPLOAD_IMAGE: - case ActionMap.UPLOAD_SCRAWL: - case ActionMap.UPLOAD_VIDEO: - case ActionMap.UPLOAD_FILE: - conf = this.configManager.getConfig(actionCode); - state = new Uploader(request, conf, configManager.getMallResourceService(),configManager.getAliyunOSS()).doExec(); - break; - - case ActionMap.CATCH_IMAGE: - conf = configManager.getConfig(actionCode); - String[] list = this.request.getParameterValues((String) conf.get("fieldName")); - state = new ImageHunter(conf).capture(list); - break; - - case ActionMap.LIST_IMAGE: - case ActionMap.LIST_FILE: - conf = configManager.getConfig(actionCode); - int start = this.getStartIndex(); - state = new FileManager(conf).listFile(start); - break; - - } - - return state.toJSONString(); - - } - - public int getStartIndex() { - - String start = this.request.getParameter("start"); - - try { - return Integer.parseInt(start); - } catch (Exception e) { - return 0; - } - - } - - /** - * callback参数验证 - */ - public boolean validCallbackName(String name) { - - if (name.matches("^[a-zA-Z_]+[\\w0-9_]*$")) { - return true; - } - - return false; - - } - -} \ No newline at end of file diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java deleted file mode 100644 index 358abe410..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/ConfigManager.java +++ /dev/null @@ -1,246 +0,0 @@ -package com.iformall.controller.ueditor; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONException; -import com.alibaba.fastjson.JSONObject; -import com.iformall.config.AwsProperty; -import com.iformall.file.aliyun.AliyunOSS; -import com.iformall.service.MallResourceService; -import com.iformall.ueditor.UEditorConfig; -import com.iformall.ueditor.define.ActionMap; - -import java.io.*; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -/** - * 配置管理器 - * - * @author hancong03@baidu.com - */ -public final class ConfigManager { - - private static final String configFileName = "config.json"; - private JSONObject jsonConfig = null; - // 涂鸦上传filename定义 - private final static String SCRAWL_FILE_NAME = "scrawl"; - // 远程图片抓取filename定义 - private final static String REMOTE_FILE_NAME = "remote"; - //配置信息 - private UEditorConfig uEditorConfig; - private AwsProperty awsProperty; - private MallResourceService mallResourceService; - private AliyunOSS aliyunOSS; - - /* - * 通过一个给定的路径构建一个配置管理器, 该管理器要求地址路径所在目录下必须存在config.properties文件 - */ - private ConfigManager(UEditorConfig uEditorConfig, AwsProperty awsProperty, MallResourceService mallResourceService, AliyunOSS aliyunOSS) throws IOException { - this.uEditorConfig = uEditorConfig; - this.awsProperty = awsProperty; - this.mallResourceService = mallResourceService; - this.aliyunOSS = aliyunOSS; - String configPath = uEditorConfig.getConfig(); - configPath = configPath == null || configPath.isEmpty() ? configFileName : configPath; - this.initEnv(configPath); - } - - /** - * 配置管理器构造工厂 - * - * @param uEditorConfig 配置文件 - * @return 配置管理器实例或者null - */ - public static com.iformall.ueditor.ConfigManager getInstance(UEditorConfig uEditorConfig, AwsProperty awsProperty, MallResourceService mallResourceService, AliyunOSS aliyunOSS) { - - try { - return new com.iformall.ueditor.ConfigManager(uEditorConfig, awsProperty, mallResourceService, aliyunOSS); - } catch (Exception e) { - System.err.println("UEditor ConfigManager load error~"); - return null; - } - - } - - public AliyunOSS getAliyunOSS() { - return aliyunOSS; - } - - public void setAliyunOSS(AliyunOSS aliyunOSS) { - this.aliyunOSS = aliyunOSS; - } - - public MallResourceService getMallResourceService() { - return mallResourceService; - } - - public void setMallResourceService(MallResourceService mallResourceService) { - this.mallResourceService = mallResourceService; - } - - // 验证配置文件加载是否正确 - public boolean valid() { - return this.jsonConfig != null; - } - - public JSONObject getAllConfig() { - - return this.jsonConfig; - - } - - public Map getConfig(int type) { - - Map conf = new HashMap(); - String savePath = null; - - try { - switch (type) { - - case ActionMap.UPLOAD_FILE: - conf.put("isBase64", "false"); - conf.put("maxSize", this.jsonConfig.getLong("fileMaxSize")); - conf.put("allowFiles", this.getArray("fileAllowFiles")); - conf.put("fieldName", this.jsonConfig.getString("fileFieldName")); - conf.put("clientRegion", this.awsProperty.getClientRegion()); - conf.put("bucketName", this.awsProperty.getBucketName()); - conf.put("access", this.awsProperty.getAccess()); - conf.put("secret", this.awsProperty.getSecret()); - savePath = this.jsonConfig.getString("filePathFormat"); - break; - - case ActionMap.UPLOAD_IMAGE: - conf.put("isBase64", "false"); - conf.put("maxSize", this.jsonConfig.getLong("imageMaxSize")); - conf.put("allowFiles", this.getArray("imageAllowFiles")); - conf.put("fieldName", this.jsonConfig.getString("imageFieldName")); - conf.put("clientRegion", this.awsProperty.getClientRegion()); - conf.put("bucketName", this.awsProperty.getBucketName()); - conf.put("access", this.awsProperty.getAccess()); - conf.put("secret", this.awsProperty.getSecret()); - savePath = this.jsonConfig.getString("imagePathFormat"); - break; - - case ActionMap.UPLOAD_VIDEO: - conf.put("maxSize", this.jsonConfig.getLong("videoMaxSize")); - conf.put("allowFiles", this.getArray("videoAllowFiles")); - conf.put("fieldName", this.jsonConfig.getString("videoFieldName")); - conf.put("clientRegion", this.awsProperty.getClientRegion()); - conf.put("bucketName", this.awsProperty.getBucketName()); - conf.put("access", this.awsProperty.getAccess()); - conf.put("secret", this.awsProperty.getSecret()); - savePath = this.jsonConfig.getString("videoPathFormat"); - break; - - case ActionMap.UPLOAD_SCRAWL: - conf.put("filename", com.iformall.ueditor.ConfigManager.SCRAWL_FILE_NAME); - conf.put("maxSize", this.jsonConfig.getLong("scrawlMaxSize")); - conf.put("fieldName", this.jsonConfig.getString("scrawlFieldName")); - conf.put("isBase64", "true"); - savePath = this.jsonConfig.getString("scrawlPathFormat"); - break; - - case ActionMap.CATCH_IMAGE: - conf.put("filename", com.iformall.ueditor.ConfigManager.REMOTE_FILE_NAME); - conf.put("filter", this.getArray("catcherLocalDomain")); - conf.put("maxSize", this.jsonConfig.getLong("catcherMaxSize")); - conf.put("allowFiles", this.getArray("catcherAllowFiles")); - conf.put("fieldName", this.jsonConfig.getString("catcherFieldName") + "[]"); - savePath = this.jsonConfig.getString("catcherPathFormat"); - break; - - case ActionMap.LIST_IMAGE: - conf.put("allowFiles", this.getArray("imageManagerAllowFiles")); - conf.put("dir", this.jsonConfig.getString("imageManagerListPath")); - conf.put("count", this.jsonConfig.getIntValue("imageManagerListSize")); - break; - - case ActionMap.LIST_FILE: - conf.put("allowFiles", this.getArray("fileManagerAllowFiles")); - conf.put("dir", this.jsonConfig.getString("fileManagerListPath")); - conf.put("count", this.jsonConfig.getIntValue("fileManagerListSize")); - break; - - } - } catch (JSONException e) { - e.printStackTrace(); - } - - conf.put("savePath", savePath); - conf.put("rootPath", uEditorConfig.getUploadPath()); - conf.put("urlPrefix", uEditorConfig.getUrlPrefix()); - return conf; - - } - - private void initEnv(String configPath) throws IOException { - - String configContent = this.readFile(configPath); - - try { - JSONObject jsonConfig = JSON.parseObject(configContent); - //统一url访问前缀 - if (uEditorConfig.getUnified()) { - Set> entrySet = jsonConfig.entrySet(); - for (Map.Entry entry : entrySet) { - String key = entry.getKey(); - if(key.contains("UrlPrefix")) { - jsonConfig.put(key, uEditorConfig.getUrlPrefix()); - } - } - } - this.jsonConfig = jsonConfig; - } catch (Exception e) { - this.jsonConfig = null; - } - - } - - private String[] getArray(String key) throws JSONException { - - JSONArray jsonArray = this.jsonConfig.getJSONArray(key); - String[] result = new String[jsonArray.size()]; - - for (int i = 0, len = jsonArray.size(); i < len; i++) { - result[i] = jsonArray.getString(i); - } - - return result; - - } - - private String readFile(String path) throws IOException { - - StringBuilder builder = new StringBuilder(); - - try { - InputStream inputStream = getClass().getClassLoader().getResourceAsStream(path); - InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8"); - BufferedReader bfReader = new BufferedReader(reader); - - String tmpContent = null; - - while ((tmpContent = bfReader.readLine()) != null) { - builder.append(tmpContent); - } - - bfReader.close(); - - } catch (UnsupportedEncodingException e) { - // 忽略 - } - - return this.filter(builder.toString()); - - } - - // 过滤输入字符串, 剔除多行注释以及替换掉反斜杠 - private String filter(String input) { - - return input.replaceAll("/\\*[\\s\\S]*?\\*/", ""); - - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java deleted file mode 100644 index 701b56801..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/Encoder.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.iformall.controller.ueditor; - -public class Encoder { - - public static String toUnicode ( String input ) { - - StringBuilder builder = new StringBuilder(); - char[] chars = input.toCharArray(); - - for ( char ch : chars ) { - - if ( ch < 256 ) { - builder.append( ch ); - } else { - builder.append( "\\u" + Integer.toHexString( ch& 0xffff ) ); - } - - } - - return builder.toString(); - - } - -} \ No newline at end of file diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java deleted file mode 100644 index c1dc778f1..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/PathFormat.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.iformall.controller.ueditor; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class PathFormat { - - private static final String TIME = "time"; - private static final String FULL_YEAR = "yyyy"; - private static final String YEAR = "yy"; - private static final String MONTH = "mm"; - private static final String DAY = "dd"; - private static final String HOUR = "hh"; - private static final String MINUTE = "ii"; - private static final String SECOND = "ss"; - private static final String RAND = "rand"; - - private static Date currentDate = null; - - public static String parse ( String input ) { - - Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE ); - Matcher matcher = pattern.matcher(input); - - com.iformall.ueditor.PathFormat.currentDate = new Date(); - - StringBuffer sb = new StringBuffer(); - - while ( matcher.find() ) { - - matcher.appendReplacement(sb, com.iformall.ueditor.PathFormat.getString( matcher.group( 1 ) ) ); - - } - - matcher.appendTail(sb); - - return sb.toString(); - } - - /** - * 格式化路径, 把windows路径替换成标准路径 - * @param input 待格式化的路径 - * @return 格式化后的路径 - */ - public static String format ( String input ) { - - return input.replace( "\\", "/" ); - - } - - public static String parse ( String input, String filename ) { - - Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE ); - Matcher matcher = pattern.matcher(input); - String matchStr = null; - - com.iformall.ueditor.PathFormat.currentDate = new Date(); - - StringBuffer sb = new StringBuffer(); - - while ( matcher.find() ) { - - matchStr = matcher.group( 1 ); - if ( matchStr.indexOf( "filename" ) != -1 ) { - filename = filename.replace( "$", "\\$" ).replaceAll( "[\\/:*?\"<>|]", "" ); - matcher.appendReplacement(sb, filename ); - } else { - matcher.appendReplacement(sb, com.iformall.ueditor.PathFormat.getString( matchStr ) ); - } - - } - - matcher.appendTail(sb); - - return sb.toString(); - } - - private static String getString ( String pattern ) { - - pattern = pattern.toLowerCase(); - - // time 处理 - if ( pattern.indexOf( com.iformall.ueditor.PathFormat.TIME ) != -1 ) { - return com.iformall.ueditor.PathFormat.getTimestamp(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.FULL_YEAR ) != -1 ) { - return com.iformall.ueditor.PathFormat.getFullYear(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.YEAR ) != -1 ) { - return com.iformall.ueditor.PathFormat.getYear(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.MONTH ) != -1 ) { - return com.iformall.ueditor.PathFormat.getMonth(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.DAY ) != -1 ) { - return com.iformall.ueditor.PathFormat.getDay(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.HOUR ) != -1 ) { - return com.iformall.ueditor.PathFormat.getHour(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.MINUTE ) != -1 ) { - return com.iformall.ueditor.PathFormat.getMinute(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.SECOND ) != -1 ) { - return com.iformall.ueditor.PathFormat.getSecond(); - } else if ( pattern.indexOf( com.iformall.ueditor.PathFormat.RAND ) != -1 ) { - return com.iformall.ueditor.PathFormat.getRandom( pattern ); - } - - return pattern; - - } - - private static String getTimestamp () { - return System.currentTimeMillis() + ""; - } - - private static String getFullYear () { - return new SimpleDateFormat( "yyyy" ).format( com.iformall.ueditor.PathFormat.currentDate ); - } - - private static String getYear () { - return new SimpleDateFormat( "yy" ).format( com.iformall.ueditor.PathFormat.currentDate ); - } - - private static String getMonth () { - return new SimpleDateFormat( "MM" ).format( com.iformall.ueditor.PathFormat.currentDate ); - } - - private static String getDay () { - return new SimpleDateFormat( "dd" ).format( com.iformall.ueditor.PathFormat.currentDate ); - } - - private static String getHour () { - return new SimpleDateFormat( "HH" ).format( com.iformall.ueditor.PathFormat.currentDate ); - } - - private static String getMinute () { - return new SimpleDateFormat( "mm" ).format( com.iformall.ueditor.PathFormat.currentDate ); - } - - private static String getSecond () { - return new SimpleDateFormat( "ss" ).format( com.iformall.ueditor.PathFormat.currentDate ); - } - - private static String getRandom ( String pattern ) { - - int length = 0; - pattern = pattern.split( ":" )[ 1 ].trim(); - - length = Integer.parseInt( pattern ); - - return ( Math.random() + "" ).replace( ".", "" ).substring( 0, length ); - - } - - public static void main(String[] args) { - // TODO Auto-generated method stub - - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java deleted file mode 100644 index f60b43942..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/UEditorConfig.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.iformall.controller.ueditor; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * Created by pangxiaofeng on 2017/9/27. - */ -@ConfigurationProperties(prefix = "ueditor") -public class UEditorConfig { - - /** - * config.json的文件存放地址 - */ - private String config; - /** - * 是否同统一上传地址:图片上传地址,视频上传地址... - */ - private boolean unified; - /** - * 文件上传路径 - */ - private String uploadPath; - /** - * 文件url前缀 - */ - private String urlPrefix; - - public String getConfig() { - return config; - } - - public void setConfig(String config) { - this.config = config; - } - - public String getUploadPath() { - return uploadPath; - } - - public void setUploadPath(String uploadPath) { - this.uploadPath = uploadPath; - } - - public String getUrlPrefix() { - return urlPrefix; - } - - public void setUrlPrefix(String urlPrefix) { - this.urlPrefix = urlPrefix; - } - - public boolean getUnified() { - return unified; - } - - public void setUnified(boolean unified) { - this.unified = unified; - } -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java deleted file mode 100644 index 001213a1b..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionMap.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.iformall.controller.ueditor.define; - -import java.util.HashMap; -import java.util.Map; - -/** - * 定义请求action类型 - * @author hancong03@baidu.com - * - */ -@SuppressWarnings("serial") -public final class ActionMap { - - public static final Map mapping; - // 获取配置请求 - public static final int CONFIG = 0; - public static final int UPLOAD_IMAGE = 1; - public static final int UPLOAD_SCRAWL = 2; - public static final int UPLOAD_VIDEO = 3; - public static final int UPLOAD_FILE = 4; - public static final int CATCH_IMAGE = 5; - public static final int LIST_FILE = 6; - public static final int LIST_IMAGE = 7; - - static { - mapping = new HashMap(){{ - put( "config", com.iformall.ueditor.define.ActionMap.CONFIG ); - put( "uploadimage", com.iformall.ueditor.define.ActionMap.UPLOAD_IMAGE ); - put( "uploadscrawl", com.iformall.ueditor.define.ActionMap.UPLOAD_SCRAWL ); - put( "uploadvideo", com.iformall.ueditor.define.ActionMap.UPLOAD_VIDEO ); - put( "uploadfile", com.iformall.ueditor.define.ActionMap.UPLOAD_FILE ); - put( "catchimage", com.iformall.ueditor.define.ActionMap.CATCH_IMAGE ); - put( "listfile", com.iformall.ueditor.define.ActionMap.LIST_FILE ); - put( "listimage", com.iformall.ueditor.define.ActionMap.LIST_IMAGE ); - }}; - } - - public static int getType ( String key ) { - return com.iformall.ueditor.define.ActionMap.mapping.get( key ); - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java deleted file mode 100644 index 59bf8e686..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/ActionState.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iformall.controller.ueditor.define; - -public enum ActionState { - UNKNOW_ERROR -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java deleted file mode 100644 index 77235c629..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/AppInfo.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.iformall.controller.ueditor.define; - -import java.util.HashMap; -import java.util.Map; - -public final class AppInfo { - - public static final int SUCCESS = 0; - public static final int MAX_SIZE = 1; - public static final int PERMISSION_DENIED = 2; - public static final int FAILED_CREATE_FILE = 3; - public static final int IO_ERROR = 4; - public static final int NOT_MULTIPART_CONTENT = 5; - public static final int PARSE_REQUEST_ERROR = 6; - public static final int NOTFOUND_UPLOAD_DATA = 7; - public static final int NOT_ALLOW_FILE_TYPE = 8; - - public static final int INVALID_ACTION = 101; - public static final int CONFIG_ERROR = 102; - - public static final int PREVENT_HOST = 201; - public static final int CONNECTION_ERROR = 202; - public static final int REMOTE_FAIL = 203; - - public static final int NOT_DIRECTORY = 301; - public static final int NOT_EXIST = 302; - - public static final int ILLEGAL = 401; - - public static Map info = new HashMap(){{ - - put( com.iformall.ueditor.define.AppInfo.SUCCESS, "SUCCESS" ); - - // 无效的Action - put( com.iformall.ueditor.define.AppInfo.INVALID_ACTION, "\u65E0\u6548\u7684Action" ); - // 配置文件初始化失败 - put( com.iformall.ueditor.define.AppInfo.CONFIG_ERROR, "\u914D\u7F6E\u6587\u4EF6\u521D\u59CB\u5316\u5931\u8D25" ); - // 抓取远程图片失败 - put( com.iformall.ueditor.define.AppInfo.REMOTE_FAIL, "\u6293\u53D6\u8FDC\u7A0B\u56FE\u7247\u5931\u8D25" ); - - // 被阻止的远程主机 - put( com.iformall.ueditor.define.AppInfo.PREVENT_HOST, "\u88AB\u963B\u6B62\u7684\u8FDC\u7A0B\u4E3B\u673A" ); - // 远程连接出错 - put( com.iformall.ueditor.define.AppInfo.CONNECTION_ERROR, "\u8FDC\u7A0B\u8FDE\u63A5\u51FA\u9519" ); - - // "文件大小超出限制" - put( com.iformall.ueditor.define.AppInfo.MAX_SIZE, "\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236" ); - // 权限不足, 多指写权限 - put( com.iformall.ueditor.define.AppInfo.PERMISSION_DENIED, "\u6743\u9650\u4E0D\u8DB3" ); - // 创建文件失败 - put( com.iformall.ueditor.define.AppInfo.FAILED_CREATE_FILE, "\u521B\u5EFA\u6587\u4EF6\u5931\u8D25" ); - // IO错误 - put( com.iformall.ueditor.define.AppInfo.IO_ERROR, "IO\u9519\u8BEF" ); - // 上传表单不是multipart/form-data类型 - put( com.iformall.ueditor.define.AppInfo.NOT_MULTIPART_CONTENT, "\u4E0A\u4F20\u8868\u5355\u4E0D\u662Fmultipart/form-data\u7C7B\u578B" ); - // 解析上传表单错误 - put( com.iformall.ueditor.define.AppInfo.PARSE_REQUEST_ERROR, "\u89E3\u6790\u4E0A\u4F20\u8868\u5355\u9519\u8BEF" ); - // 未找到上传数据 - put( com.iformall.ueditor.define.AppInfo.NOTFOUND_UPLOAD_DATA, "\u672A\u627E\u5230\u4E0A\u4F20\u6570\u636E" ); - // 不允许的文件类型 - put( com.iformall.ueditor.define.AppInfo.NOT_ALLOW_FILE_TYPE, "\u4E0D\u5141\u8BB8\u7684\u6587\u4EF6\u7C7B\u578B" ); - - // 指定路径不是目录 - put( com.iformall.ueditor.define.AppInfo.NOT_DIRECTORY, "\u6307\u5B9A\u8DEF\u5F84\u4E0D\u662F\u76EE\u5F55" ); - // 指定路径并不存在 - put( com.iformall.ueditor.define.AppInfo.NOT_EXIST, "\u6307\u5B9A\u8DEF\u5F84\u5E76\u4E0D\u5B58\u5728" ); - - // callback参数名不合法 - put( com.iformall.ueditor.define.AppInfo.ILLEGAL, "Callback\u53C2\u6570\u540D\u4E0D\u5408\u6CD5" ); - - }}; - - public static String getStateInfo ( int key ) { - return com.iformall.ueditor.define.AppInfo.info.get( key ); - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java deleted file mode 100644 index fbf6703e7..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/BaseState.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.iformall.controller.ueditor.define; - -import com.iformall.ueditor.Encoder; -import com.iformall.ueditor.define.AppInfo; -import com.iformall.ueditor.define.State; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -public class BaseState implements State { - - private boolean state = false; - private String info = null; - - private Map infoMap = new HashMap(); - - public BaseState () { - this.state = true; - } - - public BaseState ( boolean state ) { - this.setState( state ); - } - - public BaseState ( boolean state, String info ) { - this.setState( state ); - this.info = info; - } - - public BaseState ( boolean state, int infoCode ) { - this.setState( state ); - this.info = AppInfo.getStateInfo( infoCode ); - } - - public boolean isSuccess () { - return this.state; - } - - public void setState ( boolean state ) { - this.state = state; - } - - public void setInfo ( String info ) { - this.info = info; - } - - public void setInfo ( int infoCode ) { - this.info = AppInfo.getStateInfo( infoCode ); - } - - @Override - public String toJSONString() { - return this.toString(); - } - - public String toString () { - - String key = null; - String stateVal = this.isSuccess() ? AppInfo.getStateInfo( AppInfo.SUCCESS ) : this.info; - - StringBuilder builder = new StringBuilder(); - - builder.append( "{\"state\": \"" + stateVal + "\"" ); - - Iterator iterator = this.infoMap.keySet().iterator(); - - while ( iterator.hasNext() ) { - - key = iterator.next(); - - builder.append( ",\"" + key + "\": \"" + this.infoMap.get(key) + "\"" ); - - } - - builder.append( "}" ); - - return Encoder.toUnicode( builder.toString() ); - - } - - @Override - public void putInfo(String name, String val) { - this.infoMap.put(name, val); - } - - @Override - public void putInfo(String name, long val) { - this.putInfo(name, val+""); - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java deleted file mode 100644 index 4cfbae204..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/FileType.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.iformall.controller.ueditor.define; - -import java.util.HashMap; -import java.util.Map; - -public class FileType { - - public static final String JPG = "JPG"; - - private static final Map types = new HashMap(){{ - - put( com.iformall.ueditor.define.FileType.JPG, ".jpg" ); - - }}; - - public static String getSuffix ( String key ) { - return com.iformall.ueditor.define.FileType.types.get( key ); - } - - /** - * 根据给定的文件名,获取其后缀信息 - * @param filename - * @return - */ - public static String getSuffixByFilename ( String filename ) { - - return filename.substring( filename.lastIndexOf( "." ) ).toLowerCase(); - - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java deleted file mode 100644 index 70614f65d..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MIMEType.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.iformall.controller.ueditor.define; - -import java.util.HashMap; -import java.util.Map; - -public class MIMEType { - - public static final Map types = new HashMap(){{ - put( "image/gif", ".gif" ); - put( "image/jpeg", ".jpg" ); - put( "image/jpg", ".jpg" ); - put( "image/png", ".png" ); - put( "image/bmp", ".bmp" ); - }}; - - public static String getSuffix ( String mime ) { - return com.iformall.ueditor.define.MIMEType.types.get( mime ); - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java deleted file mode 100644 index 8ecf4e972..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/MultiState.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.iformall.controller.ueditor.define; - -import com.iformall.ueditor.Encoder; -import com.iformall.ueditor.define.AppInfo; -import com.iformall.ueditor.define.State; - -import java.util.*; - -/** - * 多状态集合状态 - * 其包含了多个状态的集合, 其本身自己也是一个状态 - * @author hancong03@baidu.com - * - */ -public class MultiState implements State { - - private boolean state = false; - private String info = null; - private Map intMap = new HashMap(); - private Map infoMap = new HashMap(); - private List stateList = new ArrayList(); - - public MultiState ( boolean state ) { - this.state = state; - } - - public MultiState ( boolean state, String info ) { - this.state = state; - this.info = info; - } - - public MultiState ( boolean state, int infoKey ) { - this.state = state; - this.info = AppInfo.getStateInfo( infoKey ); - } - - @Override - public boolean isSuccess() { - return this.state; - } - - public void addState ( State state ) { - stateList.add( state.toJSONString() ); - } - - /** - * 该方法调用无效果 - */ - @Override - public void putInfo(String name, String val) { - this.infoMap.put(name, val); - } - - @Override - public String toJSONString() { - - String stateVal = this.isSuccess() ? AppInfo.getStateInfo( AppInfo.SUCCESS ) : this.info; - - StringBuilder builder = new StringBuilder(); - - builder.append( "{\"state\": \"" + stateVal + "\"" ); - - // 数字转换 - Iterator iterator = this.intMap.keySet().iterator(); - - while ( iterator.hasNext() ) { - - stateVal = iterator.next(); - - builder.append( ",\""+ stateVal +"\": " + this.intMap.get( stateVal ) ); - - } - - iterator = this.infoMap.keySet().iterator(); - - while ( iterator.hasNext() ) { - - stateVal = iterator.next(); - - builder.append( ",\""+ stateVal +"\": \"" + this.infoMap.get( stateVal ) + "\"" ); - - } - - builder.append( ", list: [" ); - - - iterator = this.stateList.iterator(); - - while ( iterator.hasNext() ) { - - builder.append( iterator.next() + "," ); - - } - - if ( this.stateList.size() > 0 ) { - builder.deleteCharAt( builder.length() - 1 ); - } - - builder.append( " ]}" ); - - return Encoder.toUnicode( builder.toString() ); - - } - - @Override - public void putInfo(String name, long val) { - this.intMap.put( name, val ); - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java deleted file mode 100644 index 263c73c8a..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/define/State.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.iformall.controller.ueditor.define; - -/** - * 处理状态接口 - * @author hancong03@baidu.com - * - */ -public interface State { - - public boolean isSuccess(); - - public void putInfo(String name, String val); - - public void putInfo(String name, long val); - - public String toJSONString(); - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java deleted file mode 100644 index e1e7a2e28..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/FileManager.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.iformall.controller.ueditor.hunter; - -import com.iformall.ueditor.PathFormat; -import com.iformall.ueditor.define.AppInfo; -import com.iformall.ueditor.define.BaseState; -import com.iformall.ueditor.define.MultiState; -import com.iformall.ueditor.define.State; -import org.apache.commons.io.FileUtils; - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; -import java.util.Map; - -public class FileManager { - - private String dir = null; - private String rootPath = null; - private String[] allowFiles = null; - private int count = 0; - - public FileManager(Map conf) { - - this.rootPath = (String) conf.get("rootPath"); - this.dir = this.rootPath + (String) conf.get("dir"); - this.allowFiles = this.getAllowFiles(conf.get("allowFiles")); - this.count = (Integer) conf.get("count"); - - } - - public State listFile(int index) { - - File dir = new File(this.dir); - State state = null; - - if (!dir.exists()) { - return new BaseState(false, AppInfo.NOT_EXIST); - } - - if (!dir.isDirectory()) { - return new BaseState(false, AppInfo.NOT_DIRECTORY); - } - - Collection list = FileUtils.listFiles(dir, this.allowFiles, true); - - if (index < 0 || index > list.size()) { - state = new MultiState(true); - } else { - Object[] fileList = Arrays.copyOfRange(list.toArray(), index, index + this.count); - state = this.getState(fileList); - } - - state.putInfo("start", index); - state.putInfo("total", list.size()); - - return state; - - } - - private State getState(Object[] files) { - - MultiState state = new MultiState(true); - BaseState fileState = null; - - File file = null; - - for (Object obj : files) { - if (obj == null) { - break; - } - file = (File) obj; - fileState = new BaseState(true); - fileState.putInfo("url", PathFormat.format(this.getPath(file))); - state.addState(fileState); - } - - return state; - - } - - private String getPath(File file) { - - String path = file.getAbsolutePath(); - path = PathFormat.format(path); - return path.replace(this.rootPath, "/"); - - } - - private String[] getAllowFiles(Object fileExt) { - - String[] exts = null; - String ext = null; - - if (fileExt == null) { - return new String[0]; - } - - exts = (String[]) fileExt; - - for (int i = 0, len = exts.length; i < len; i++) { - - ext = exts[i]; - exts[i] = ext.replace(".", ""); - - } - - return exts; - - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java deleted file mode 100644 index 5793c8d38..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/hunter/ImageHunter.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.iformall.controller.ueditor.hunter; - -import com.iformall.ueditor.PathFormat; -import com.iformall.ueditor.define.*; -import com.iformall.ueditor.upload.StorageManager; - -import java.net.HttpURLConnection; -import java.net.InetAddress; -import java.net.URL; -import java.net.UnknownHostException; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -/** - * 图片抓取器 - * @author hancong03@baidu.com - * - */ -public class ImageHunter { - - private String filename = null; - private String savePath = null; - private String rootPath = null; - private List allowTypes = null; - private long maxSize = -1; - - private List filters = null; - - public ImageHunter ( Map conf ) { - - this.filename = (String)conf.get( "filename" ); - this.savePath = (String)conf.get( "savePath" ); - this.rootPath = (String)conf.get( "rootPath" ); - this.maxSize = (Long)conf.get( "maxSize" ); - this.allowTypes = Arrays.asList( (String[])conf.get( "allowFiles" ) ); - this.filters = Arrays.asList( (String[])conf.get( "filter" ) ); - - } - - public State capture (String[] list ) { - - MultiState state = new MultiState( true ); - - for ( String source : list ) { - state.addState( captureRemoteData( source ) ); - } - - return state; - - } - - public State captureRemoteData ( String urlStr ) { - - HttpURLConnection connection = null; - URL url = null; - String suffix = null; - - try { - url = new URL( urlStr ); - - if ( !validHost( url.getHost() ) ) { - return new BaseState( false, AppInfo.PREVENT_HOST ); - } - - connection = (HttpURLConnection) url.openConnection(); - - connection.setInstanceFollowRedirects( true ); - connection.setUseCaches( true ); - - if ( !validContentState( connection.getResponseCode() ) ) { - return new BaseState( false, AppInfo.CONNECTION_ERROR ); - } - - suffix = MIMEType.getSuffix( connection.getContentType() ); - - if ( !validFileType( suffix ) ) { - return new BaseState( false, AppInfo.NOT_ALLOW_FILE_TYPE ); - } - - if ( !validFileSize( connection.getContentLength() ) ) { - return new BaseState( false, AppInfo.MAX_SIZE ); - } - - String savePath = this.getPath( this.savePath, this.filename, suffix ); - String physicalPath = this.rootPath + savePath; - - State state = StorageManager.saveFileByInputStream( connection.getInputStream(), physicalPath ); - - if ( state.isSuccess() ) { - state.putInfo( "url", PathFormat.format( savePath ) ); - state.putInfo( "source", urlStr ); - } - - return state; - - } catch ( Exception e ) { - return new BaseState( false, AppInfo.REMOTE_FAIL ); - } - - } - - private String getPath ( String savePath, String filename, String suffix ) { - - return PathFormat.parse( savePath + suffix, filename ); - - } - - private boolean validHost ( String hostname ) { - try { - InetAddress ip = InetAddress.getByName(hostname); - - if (ip.isSiteLocalAddress()) { - return false; - } - } catch (UnknownHostException e) { - return false; - } - - return !filters.contains( hostname ); - - } - - private boolean validContentState ( int code ) { - - return HttpURLConnection.HTTP_OK == code; - - } - - private boolean validFileType ( String type ) { - - return this.allowTypes.contains( type ); - - } - - private boolean validFileSize ( int size ) { - return size < this.maxSize; - } - -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java deleted file mode 100644 index 43854fdb7..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Base64Uploader.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.iformall.controller.ueditor.upload; - -import com.iformall.ueditor.PathFormat; -import com.iformall.ueditor.define.AppInfo; -import com.iformall.ueditor.define.BaseState; -import com.iformall.ueditor.define.FileType; -import com.iformall.ueditor.define.State; -import com.iformall.ueditor.upload.StorageManager; -import org.apache.commons.codec.binary.Base64; - -import java.util.Map; - -public final class Base64Uploader { - - public static State save(String content, Map conf) { - - byte[] data = decode(content); - - long maxSize = ((Long) conf.get("maxSize")).longValue(); - - if (!validSize(data, maxSize)) { - return new BaseState(false, AppInfo.MAX_SIZE); - } - - String suffix = FileType.getSuffix("JPG"); - - String savePath = PathFormat.parse((String) conf.get("savePath"), - (String) conf.get("filename")); - - savePath = savePath + suffix; - String physicalPath = (String) conf.get("rootPath") + savePath; - - State storageState = StorageManager.saveBinaryFile(data, physicalPath); - - if (storageState.isSuccess()) { - storageState.putInfo("url", PathFormat.format(savePath)); - storageState.putInfo("type", suffix); - storageState.putInfo("original", ""); - } - - return storageState; - } - - private static byte[] decode(String content) { - return Base64.decodeBase64(content); - } - - private static boolean validSize(byte[] data, long length) { - return data.length <= length; - } - -} \ No newline at end of file diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java deleted file mode 100644 index 79bd28c0c..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/BinaryUploader.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.iformall.controller.ueditor.upload; - -import com.iformall.ueditor.PathFormat; -import com.iformall.ueditor.define.AppInfo; -import com.iformall.ueditor.define.BaseState; -import com.iformall.ueditor.define.FileType; -import com.iformall.ueditor.define.State; -import com.iformall.ueditor.upload.StorageManager; -import org.apache.commons.fileupload.servlet.ServletFileUpload; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; - -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -public class BinaryUploader { - - public static final State save(HttpServletRequest request, Map conf) { - if (!ServletFileUpload.isMultipartContent(request)) { - return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT); - } - - MultipartFile file = ((MultipartHttpServletRequest) request).getFile("upfile"); - try { - if (file == null) { - return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA); - } - - String savePath = (String) conf.get("savePath"); - String originFileName = file.getOriginalFilename(); - String suffix = FileType.getSuffixByFilename(file.getOriginalFilename()); - - originFileName = originFileName.substring(0, - originFileName.length() - suffix.length()); - savePath = savePath + suffix; - - long maxSize = ((Long) conf.get("maxSize")).longValue(); - - if (!validType(suffix, (String[]) conf.get("allowFiles"))) { - return new BaseState(false, AppInfo.NOT_ALLOW_FILE_TYPE); - } - - savePath = PathFormat.parse(savePath, originFileName); - String physicalPath = (String) conf.get("rootPath") + savePath; - - InputStream is = file.getInputStream(); - State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize); - is.close(); - - if (storageState.isSuccess()) { - storageState.putInfo("url", PathFormat.format(savePath)); - storageState.putInfo("local", physicalPath); - storageState.putInfo("type", suffix); - storageState.putInfo("original", originFileName + suffix); - } - return storageState; - } catch (IOException e) { - } - return new BaseState(false, AppInfo.IO_ERROR); - } - - private static boolean validType(String type, String[] allowTypes) { - List list = Arrays.asList(allowTypes); - - return list.contains(type); - } -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java deleted file mode 100644 index f000d80aa..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/StorageManager.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.iformall.controller.ueditor.upload; - -import com.iformall.ueditor.define.AppInfo; -import com.iformall.ueditor.define.BaseState; -import com.iformall.ueditor.define.State; -import org.apache.commons.io.FileUtils; - -import java.io.*; - -public class StorageManager { - public static final int BUFFER_SIZE = 8192; - - public StorageManager() { - } - - public static State saveBinaryFile(byte[] data, String path) { - File file = new File(path); - - State state = valid(file); - - if (!state.isSuccess()) { - return state; - } - - try { - BufferedOutputStream bos = new BufferedOutputStream( - new FileOutputStream(file)); - bos.write(data); - bos.flush(); - bos.close(); - } catch (IOException ioe) { - return new BaseState(false, AppInfo.IO_ERROR); - } - - state = new BaseState(true, file.getAbsolutePath()); - state.putInfo("size", data.length); - state.putInfo("title", file.getName()); - return state; - } - - public static State saveFileByInputStream(InputStream is, String path, long maxSize) { - State state = null; - - File tmpFile = getTmpFile(); - - byte[] dataBuf = new byte[2048]; - BufferedInputStream bis = new BufferedInputStream(is, com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); - - try { - BufferedOutputStream bos = new BufferedOutputStream( - new FileOutputStream(tmpFile), com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); - - int count = 0; - while ((count = bis.read(dataBuf)) != -1) { - bos.write(dataBuf, 0, count); - } - bos.flush(); - bos.close(); - - if (tmpFile.length() > maxSize) { - tmpFile.delete(); - return new BaseState(false, AppInfo.MAX_SIZE); - } - - state = saveTmpFile(tmpFile, path); - - if (!state.isSuccess()) { - tmpFile.delete(); - } - - return state; - - } catch (IOException e) { - } - return new BaseState(false, AppInfo.IO_ERROR); - } - - public static State saveFileByInputStream(InputStream is, String path) { - State state = null; - - File tmpFile = getTmpFile(); - - byte[] dataBuf = new byte[2048]; - BufferedInputStream bis = new BufferedInputStream(is, com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); - - try { - BufferedOutputStream bos = new BufferedOutputStream( - new FileOutputStream(tmpFile), com.iformall.ueditor.upload.StorageManager.BUFFER_SIZE); - - int count = 0; - while ((count = bis.read(dataBuf)) != -1) { - bos.write(dataBuf, 0, count); - } - bos.flush(); - bos.close(); - - state = saveTmpFile(tmpFile, path); - - if (!state.isSuccess()) { - tmpFile.delete(); - } - - return state; - } catch (IOException e) { - } - return new BaseState(false, AppInfo.IO_ERROR); - } - - private static File getTmpFile() { - File tmpDir = FileUtils.getTempDirectory(); - String tmpFileName = (Math.random() * 10000 + "").replace(".", ""); - return new File(tmpDir, tmpFileName); - } - - private static State saveTmpFile(File tmpFile, String path) { - State state = null; - File targetFile = new File(path); - - if (targetFile.canWrite()) { - return new BaseState(false, AppInfo.PERMISSION_DENIED); - } - try { - FileUtils.moveFile(tmpFile, targetFile); - } catch (IOException e) { - return new BaseState(false, AppInfo.IO_ERROR); - } - - state = new BaseState(true); - state.putInfo("size", targetFile.length()); - state.putInfo("title", targetFile.getName()); - - return state; - } - - private static State valid(File file) { - File parentPath = file.getParentFile(); - - if ((!parentPath.exists()) && (!parentPath.mkdirs())) { - return new BaseState(false, AppInfo.FAILED_CREATE_FILE); - } - - if (!parentPath.canWrite()) { - return new BaseState(false, AppInfo.PERMISSION_DENIED); - } - - return new BaseState(true); - } -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java deleted file mode 100644 index 693e0c312..000000000 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/ueditor/upload/Uploader.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.iformall.controller.ueditor.upload; - -import com.iformall.common.ResultData; -import com.iformall.domain.po.MallResource; -import com.iformall.domain.po.base.TenantEntity; -import com.iformall.file.aliyun.AliyunOSS; -import com.iformall.service.MallResourceService; -import com.iformall.shiro.UserSession; -import com.iformall.ueditor.define.BaseState; -import com.iformall.ueditor.define.State; -import com.iformall.ueditor.upload.Base64Uploader; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.session.Session; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; - -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.util.Map; - -public class Uploader { - - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - private HttpServletRequest request = null; - private Map conf = null; - private MallResourceService mallResourceService = null; - - private AliyunOSS aliyunOSS; - - public Uploader(HttpServletRequest request, Map conf, MallResourceService mallResourceService, AliyunOSS aliyunOSS) { - this.request = request; - this.conf = conf; - this.mallResourceService = mallResourceService; - this.aliyunOSS = aliyunOSS; - } - - public final State doExec() { - String filedName = (String) this.conf.get("fieldName"); - State state = null; - - if ("true".equals(this.conf.get("isBase64"))) { - state = Base64Uploader.save(this.request.getParameter(filedName), - this.conf); - } else { - MultipartFile multiReq= ((MultipartHttpServletRequest) this.request).getFile("upfile"); - Session session = SecurityUtils.getSubject().getSession(); - String tenantId = (String)session.getAttribute(UserSession.tenantId); - String parentTenantId = (String)session.getAttribute(UserSession.parentTenantId); - if(StringUtils.isBlank(tenantId)){ - tenantId = parentTenantId; - parentTenantId = ""; - } - TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.setTenantId(tenantId); - tenantEntity.setParentTenantId(parentTenantId); - if (StringUtils.isBlank(tenantId)) { - logger.error("TENANT is null"); - } - - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } - - state = new BaseState(true); - state.putInfo("size", multiReq.getSize()); - state.putInfo("title", filedName); - - try { - - ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); - Map map = (Map) data.data; - state.putInfo("url",map.get("url")); - - MallResource mr = new MallResource(); - mr.updateTenantInfo(tenantEntity); - mr.setBucket(map.get("bucketName")); - mr.setUrl(map.get("url")); - - mallResourceService.saveOrUpdate(mr); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - } - - return state; - } -} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java index 6ea6679af..5d2b42d28 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -11,6 +11,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -57,6 +58,9 @@ public class VideoController extends BaseController { String fileFormat = ""; if (dot >= 0) { fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + if(StringUtils.isNotBlank(title)){ + title = multiReq.getOriginalFilename().substring(0,dot); + } } if(!fileFormat.endsWith("mp4")){ return new ResultData(ErrorCode.PICTURE_ENDWIDTH_ERROR); diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index fb8a505b2..254f240a6 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -88,7 +88,6 @@ public class AliyunVideoExcutor implements VideoExcutor { UploadStreamResponse response; try { response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-","")+fileFormat, inputStream,redisTemplate); - log.info(response.toString()); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); setVideUploadResult(result,response.getVideoId()); From 18571c60c85f3167bceef4bf8eeb18a11fa48038 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 18:11:46 +0800 Subject: [PATCH 09/29] tt --- .../com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java index a0fd76045..cbe3d9649 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java @@ -358,7 +358,7 @@ public class AliyunVedioUpload { /* 点播服务接入点 */ request.setApiRegionId(regionId); /* ECS部署区域*/ - request.setEcsRegionId(regionId); +// request.setEcsRegionId(regionId); UploadVideoImpl uploader = new UploadVideoImpl(); UploadStreamResponse response = uploader.uploadStream(request); return response; From db9caf49294636379bcc6ff7c08ec282985ac24f Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 18:14:03 +0800 Subject: [PATCH 10/29] tt --- .../src/main/java/com/iformall/config/ShiroConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java index 75cd12d65..7e16e23c8 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/config/ShiroConfig.java @@ -152,8 +152,8 @@ public class ShiroConfig { //配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 filterChainDefinitionMap.put("/logout", "authc"); -// filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); - filterChainDefinitionMap.put("/**", "anon"); + filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); +// filterChainDefinitionMap.put("/**", "anon"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); From df9481b9d3ef4ce07df573553d95b1b0f6df5d4e Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 18:42:38 +0800 Subject: [PATCH 11/29] tt --- .../java/com/iformall/video/aliyun/AliyunVideoExcutor.java | 4 ++-- .../iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index 254f240a6..3a8c3f8f6 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -90,8 +90,8 @@ public class AliyunVideoExcutor implements VideoExcutor { response = AliyunVedioUpload.uploadStream(config.getAccessKeyId(), config.getAccessKeySecret(),config.getRegionId(), title, UUID.randomUUID().toString().replace("-","")+fileFormat, inputStream,redisTemplate); if (response.isSuccess()) { result.setVideoId(response.getVideoId()); - setVideUploadResult(result,response.getVideoId()); -// result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); +// setVideUploadResult(result,response.getVideoId()); + result.setVideoUrl(getUrlByVeidoId(response.getVideoId())); result.setSuccess(true); } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 result.setSuccess(false); diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java index cbe3d9649..b0f1ad0ed 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/sdk/upload/AliyunVedioUpload.java @@ -350,9 +350,9 @@ public class AliyunVedioUpload { /* 存储区域(可选) */ //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); /* 开启默认上传进度回调 */ - request.setPrintProgress(true); +// request.setPrintProgress(true); /* 设置自定义上传进度回调 (必须继承 VoDProgressListener) */ - request.setProgressListener(new PutObjectProgressListener()); +// request.setProgressListener(new PutObjectProgressListener()); /* 设置应用ID*/ //request.setAppId("app-1000000"); /* 点播服务接入点 */ From 128890e91d768bf5821eae6bc2b9654d18b46109 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 19 May 2021 18:58:49 +0800 Subject: [PATCH 12/29] tt --- .../java/com/iformall/controller/video/VideoController.java | 2 +- .../java/com/iformall/controller/video/VideoController.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java index 06ccb64cd..04bc95526 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -97,7 +97,7 @@ public class VideoController extends BaseController { String fileFormat = ""; if (dot >= 0) { fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - if(StringUtils.isNotBlank(title)){ + if(StringUtils.isBlank(title)){ title = multiReq.getOriginalFilename().substring(0,dot); } } diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java index 5d2b42d28..be4a31576 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -58,7 +58,7 @@ public class VideoController extends BaseController { String fileFormat = ""; if (dot >= 0) { fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - if(StringUtils.isNotBlank(title)){ + if(StringUtils.isBlank(title)){ title = multiReq.getOriginalFilename().substring(0,dot); } } From 9f6d9b1de42e9d83dcb875d1a35e97cb51b26017 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 20 May 2021 13:32:04 +0800 Subject: [PATCH 13/29] tt --- .../iformall/domain/po/tt/TtVideoLibrary.java | 9 +- .../iformall/mapper/TtVideoLibraryMapper.java | 1 + .../iformall/service/WxCallBackService.java | 2 +- .../service/tt/TtVideoLibraryService.java | 23 +++ .../service/tt/impl/TtCouponServiceImpl.java | 16 +- .../tt/impl/TtVideoLibraryServiceImpl.java | 67 +++++++++ .../main/resources/mapper/TtCouponMapper.xml | 51 ++++--- .../resources/mapper/TtVideoLibraryMapper.xml | 21 ++- .../controller/tt/TtCouponController.java | 137 +++++++++++++++--- .../controller/video/VideoController.java | 21 +++ .../java/com/iformall/video/VideoExcutor.java | 2 + .../video/aliyun/AliyunVideoExcutor.java | 29 ++++ 12 files changed, 329 insertions(+), 50 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/service/tt/TtVideoLibraryService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/tt/impl/TtVideoLibraryServiceImpl.java diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java index 43ec165d4..eb7d354ec 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtVideoLibrary.java @@ -17,12 +17,19 @@ public class TtVideoLibrary extends TenantEntity { protected Long id; + @io.swagger.annotations.ApiModelProperty(value="",name="videoId") + private String videoId; + @io.swagger.annotations.ApiModelProperty(value="",name="videoUrl") + private String videoUrl; + @io.swagger.annotations.ApiModelProperty(value="封面图",name="preview") private String preview; @io.swagger.annotations.ApiModelProperty(value="",name="name") private String name; @io.swagger.annotations.ApiModelProperty(value="时长",name="duration") - private Integer duration; + private String duration; + @io.swagger.annotations.ApiModelProperty(value="有效时间",name="exceedTime") + private Date exceedTime; @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java index 7a458cf13..856135836 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/TtVideoLibraryMapper.java @@ -11,4 +11,5 @@ public interface TtVideoLibraryMapper extends CommonMapper int deleteById(Long id); + TtVideoLibrary getByVideoId(String videoId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCallBackService.java b/mallinkService/src/main/java/com/iformall/service/WxCallBackService.java index 281be3a8f..ec6566236 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCallBackService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCallBackService.java @@ -7,7 +7,7 @@ import org.springframework.scheduling.annotation.Async; public interface WxCallBackService { /** - * 积分同步 + * * @param record */ @Async diff --git a/mallinkService/src/main/java/com/iformall/service/tt/TtVideoLibraryService.java b/mallinkService/src/main/java/com/iformall/service/tt/TtVideoLibraryService.java new file mode 100644 index 000000000..8a00be163 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/tt/TtVideoLibraryService.java @@ -0,0 +1,23 @@ +package com.iformall.service.tt; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.tt.TtVideoLibrary; +import org.springframework.scheduling.annotation.Async; + +public interface TtVideoLibraryService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(TtVideoLibrary record, Integer pageIndex, Integer pageSize); + + + @Async + void saveOrUpdate(TtVideoLibrary video); +} diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index 095a9b5ef..3e4521d67 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -6,6 +6,8 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.tt.TtCoupon; +import com.iformall.enums.EnumTtCouponStatus; +import com.iformall.enums.EnumTtCouponType; import com.iformall.mapper.*; import com.iformall.service.WxMerchantService; import com.iformall.service.tt.TtCouponService; @@ -62,7 +64,7 @@ public class TtCouponServiceImpl implements TtCouponService { } } - + record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_DRAFT.getCode()); if (record.getId() == null) { final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); @@ -74,7 +76,17 @@ public class TtCouponServiceImpl implements TtCouponService { record.setUpdateDate(new Date()); ttCouponMapper.updateById(record); } - return new ResultData(record.getId()); + + if(record.getType().equals(EnumTtCouponType.COUPON_COLUMN.getCode()) + && record.getColumnCoupons() != null && record.getColumnCoupons().size() > 0){ + for (TtCoupon ttc:record.getColumnCoupons()) { + ttc.updateTenantInfo(record); + ttc.setType(EnumTtCouponType.COUPON_MORE.getCode()); + ttc.setColumnId(record.getId()); + this.saveOrUpdate(ttc); + } + } + return new ResultData(); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtVideoLibraryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtVideoLibraryServiceImpl.java new file mode 100644 index 000000000..8d73b4b70 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtVideoLibraryServiceImpl.java @@ -0,0 +1,67 @@ +package com.iformall.service.tt.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.tt.TtCoupon; +import com.iformall.domain.po.tt.TtOrder; +import com.iformall.domain.po.tt.TtVideoLibrary; +import com.iformall.douyin.pay.DouYinPayHelper; +import com.iformall.douyin.pay.orderQuery.OrderQueryResult; +import com.iformall.douyin.pay.preOrder.CreatePreOrderResult; +import com.iformall.douyin.pay.preOrder.DouYinCreatePreOrder; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.TtOrderMapper; +import com.iformall.mapper.TtVideoLibraryMapper; +import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxCUserBasicInfoService; +import com.iformall.service.tt.TtCouponService; +import com.iformall.service.tt.TtOrderService; +import com.iformall.service.tt.TtVideoLibraryService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Service +public class TtVideoLibraryServiceImpl implements TtVideoLibraryService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private TtVideoLibraryMapper ttVideoLibraryMapper; + + @Override + public PageInfo listAsPage(TtVideoLibrary record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> ttVideoLibraryMapper.findList(record)); + } + + @Override + public void saveOrUpdate(TtVideoLibrary video) { + TtVideoLibrary videoLib = ttVideoLibraryMapper.getByVideoId(video.getVideoId()); + if(videoLib != null && videoLib.getIsDel().equals(EnumYesOrNo.YES.getCode())){ + videoLib.setIsDel(EnumYesOrNo.NO.getCode()); + videoLib.setUpdateDate(new Date()); + ttVideoLibraryMapper.updateById(videoLib); + } + if(videoLib == null){ + final IdWorker idWorker = IdWorker.get(); + video.setId(idWorker.nextId()); + video.setCreateDate(new Date()); + video.setUpdateDate(new Date()); + ttVideoLibraryMapper.insert(video); + } + } + +} diff --git a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml index 7f0484a02..91c7c14d0 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml @@ -39,85 +39,90 @@ + + - `id`, `tenant_id`, `parent_tenant_id`, `type`, `cover_img`, `cover_picture`, `detail_picture`, - `title`, `sub_title`, `video_id`, `video_time`, `html`, `is_landscape`, `is_payment`, - `sale_price`, `orig_price`, `is_preview`, `preview_duration`, `detail`, `false_sell_count`, - `dy_title`, `inventory`, `remark`, `status`, `create_date`, `update_date`, - `see_count`, `sell_count`, `assess_count`, `collect_count`, `is_del`, - `column_id`, `popularity`, `merchant_id`, `business_id`, `business_name` + c.`id`, c.`tenant_id`, c.`parent_tenant_id`, c.`type`, c.`cover_img`, c.`cover_picture`, c.`detail_picture`, + c.`title`, c.`sub_title`, c.`video_id`, c.`video_time`, c.`html`, c.`is_landscape`, c.`is_payment`, + c.`sale_price`, c.`orig_price`, c.`is_preview`, c.`preview_duration`, c.`detail`, c.`false_sell_count`, + c.`dy_title`, c.`inventory`, c.`remark`, c.`status`, c.`create_date`, c.`update_date`, + c.`see_count`, c.`sell_count`, c.`assess_count`, c.`collect_count`, c.`is_del`, + c.`column_id`, c.`popularity`, c.`merchant_id`, c.`business_id`, c.`business_name`, + m.name merchant_name, m.img_url merchant_pic - where `is_del` = 0 + where c.`is_del` = 0 - and `id` = #{id} + and c.`id` = #{id} - and `tenant_id` = #{tenantId} + and c.`tenant_id` = #{tenantId} - and `parent_tenant_id` = #{parentTenantId} + and c.`parent_tenant_id` = #{parentTenantId} - and `type` = #{type} + and c.`type` = #{type} - and `title` like concat('%', #{title},'%') + and c.`title` like concat('%', #{title},'%') - and `is_landscape` = #{isLandscape} + and c.`is_landscape` = #{isLandscape} - and `is_payment` = #{isPayment} + and c.`is_payment` = #{isPayment} - and `is_preview` = #{isPreview} + and c.`is_preview` = #{isPreview} - and `status` = #{status} + and c.`status` = #{status} - and `create_date` >= #{startdate} + and c.`create_date` >= #{startdate} - and `create_date` <= #{enddate} + and c.`create_date` <= #{enddate} - and `business_id` = #{businessId} + and c.`business_id` = #{businessId} - and `merchant_id` = #{merchantId} + and c.`merchant_id` = #{merchantId} - and id in + and c.id in #{idItem} - order by ${sortColumns} + order by c.`update_date` desc + diff --git a/mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml b/mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml index c9c671ca3..b09dec9c8 100644 --- a/mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtVideoLibraryMapper.xml @@ -5,15 +5,18 @@ + + - + + - `id`, `tenant_id`, `parent_tenant_id`, `preview`, `name`, `duration`, `create_date`, `update_date` + `id`, `tenant_id`, `parent_tenant_id`, `video_id`, `video_url`, `preview`, `name`, `duration`, `exceed_time`,`create_date`, `update_date` @@ -30,6 +33,11 @@ and `parent_tenant_id` = #{parentTenantId} + + and `video_id` = #{videoId} + + + and `title` like concat('%', #{name},'%') @@ -61,4 +69,13 @@ update tt_video_library set is_del = 1,update_date=now() where id = #{id} + + + + diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java index 77f441ba4..b85b6b6e5 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java @@ -1,24 +1,34 @@ package com.iformall.controller.tt; import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCoupon; +import com.iformall.domain.po.tt.TtVideoLibrary; import com.iformall.enums.*; import com.iformall.service.WxFlowService; +import com.iformall.service.WxMerchantService; import com.iformall.service.tt.TtCouponService; +import com.iformall.service.tt.TtVideoLibraryService; import com.iformall.utils.RedisLock; +import com.iformall.video.VideoFactory; +import com.iformall.video.entity.VideUploadResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("ttCoupon") @Api(description = "") @@ -29,9 +39,21 @@ public class TtCouponController extends BaseController { @Autowired private TtCouponService ttCouponService; + @Autowired + private TtVideoLibraryService ttVideoLibraryService; + + @Autowired + private WxMerchantService wxMerchantService; + @Autowired private WxFlowService wxFlowService; + @Autowired + VideoFactory videoFactory; + + @Autowired + String videoType; + @Autowired RedisLock redisLock; @@ -52,9 +74,47 @@ public class TtCouponController extends BaseController { @SystemControllerLog(description = "-新增") public ResultData add(@RequestBody TtCoupon record) { logger.debug("[" + getIpAddr() + "] WxCouponController::add"); + if(record == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } TenantEntity tenantEntity = getTenantInfo(); record.updateTenantInfo(tenantEntity); + if(record.getMerchantId() == null){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + merchantQ.setStatus(EnumMerchantStatus.VALID.getCode()); + List list = wxMerchantService.findList(merchantQ); + if(list != null && list.size() > 0){ + record.setMerchantId(list.get(0).getId()); + } + } + if(record.getMerchantId() == null){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到作者"); + } + if(record.getBusinessId() == null){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"未选择分类"); + } + if(StringUtils.isBlank(record.getVideoId())){ +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"未上传视频"); + }else{ + VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(record.getVideoId()); + if(result.isSuccess()){ + record.setVideoTime(result.getDuration()); + TtVideoLibrary video = new TtVideoLibrary(); + video.updateTenantInfo(tenantEntity); + video.setVideoId(record.getVideoId()); + video.setVideoUrl(result.getVideoUrl()); + video.setPreview(result.getCoverURL()); + video.setDuration(result.getDuration()); + ttVideoLibraryService.saveOrUpdate(video); + }else{ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,result.getMsg()); + } + } + + + record.setType(EnumTtCouponType.COUPON_SINGLE.getCode()); ResultData resultData = ttCouponService.saveOrUpdate(record); if (resultData.code != 200) { return resultData; @@ -67,6 +127,7 @@ public class TtCouponController extends BaseController { //修改coupon applyStatus状态为审核中 record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); } + return resultData; } @@ -78,32 +139,66 @@ public class TtCouponController extends BaseController { if (record.getId() == null) { return new ResultData(ResultData.ERROR, "缺少id"); } - record.updateTenantInfo(getTenantInfo()); + TenantEntity tenantEntity = getTenantInfo(); + record.updateTenantInfo(tenantEntity); if(EnumDelFlag.YES.getCode().equals(record.getIsDel())){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到课程,或课程已删除"); + } + TtCoupon coupon = ttCouponService.getById(record.getId()); + if (null == coupon || EnumDelFlag.YES.getCode().equals(record.getIsDel())) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到课程,或课程已删除"); + } + if(record.getMerchantId() == null){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + merchantQ.setStatus(EnumMerchantStatus.VALID.getCode()); + List list = wxMerchantService.findList(merchantQ); + if(list != null && list.size() > 0){ + record.setMerchantId(list.get(0).getId()); + } + } + if(record.getMerchantId() == null){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到作者"); + } + if(record.getBusinessId() == null){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"未选择分类"); + } + if(!record.getMerchantId().equals(coupon.getMerchantId())){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"作者课程不匹配"); + } + if(StringUtils.isBlank(record.getVideoId())){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"未上传视频"); + } + VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(record.getVideoId()); + if(result.isSuccess()){ + record.setVideoTime(result.getDuration()); + TtVideoLibrary video = new TtVideoLibrary(); + video.updateTenantInfo(tenantEntity); + video.setVideoId(record.getVideoId()); + video.setVideoUrl(result.getVideoUrl()); + video.setPreview(result.getCoverURL()); + video.setDuration(result.getDuration()); + ttVideoLibraryService.saveOrUpdate(video); + }else{ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,result.getMsg()); } - TtCoupon coupon = ttCouponService.getById(record.getId()); - if (null == coupon) { - return new ResultData(ResultData.ERROR, "未查询到数据。"+record.getId()); - } - - //启动审批流 -// if (record.getFlowParams() != null && record.getFlowParams().size() > 0) { -// logger.info("------coupon.update().businessType:"+record.getFlowParams().get("businessType")); -// record.getFlowParams().put("businessId",record.getId()); -// wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), getTenantInfo()); -// //作废审批 -// if (EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(record.getStatus())) { -// record.setCancleApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); -// return new ResultData(record); -// } else { -// //投放审批 -// record.setPutApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); -// } -// } +// record.setType(EnumTtCouponType.COUPON_SINGLE.getCode()); + ResultData resultData = ttCouponService.saveOrUpdate(record); + if (resultData.code != 200) { + return resultData; + } + + //启动投放审批 + if(record.getFlowParams() !=null && record.getFlowParams().size()>0) { + record.getFlowParams().put("businessId",record.getId()); + wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); + //修改coupon applyStatus状态为审核中 + record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); + } - return ttCouponService.saveOrUpdate(record); + return resultData; } @ApiOperation("根据id删除接口") diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java index be4a31576..1ba72eead 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -94,4 +94,25 @@ public class VideoController extends BaseController { } } + /** + * 获取视频信息 + * + * @param + * @return + * @throws Exception + */ + @GetMapping(value = "/getVideoDetail") + @ApiOperation("上传视频进度") + @ApiImplicitParams({ + @ApiImplicitParam(name = "videoId", value = "视频编号", dataType = "String", paramType = "query", required = true)}) + public ResultData getVideoDetail(String videoId) { + try { + VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(videoId); + return new ResultData(result); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + } diff --git a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java index cfeb04f17..49d7ce398 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java @@ -19,4 +19,6 @@ public interface VideoExcutor { public VideUploadResult uploadNetVideo(String title,String url,String ext); public String getVedioUploadProgress(String videoId); + + VideUploadResult getVideoDetail(String videoId); } diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index 3a8c3f8f6..a0e80a394 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -132,4 +132,33 @@ public class AliyunVideoExcutor implements VideoExcutor { public String getVedioUploadProgress(String videoId) { return AliyunVedioUpload.getUploadProgress(redisTemplate, videoId); } + + @Override + public VideUploadResult getVideoDetail(String videoId) { + VideUploadResult result = new VideUploadResult(); + result.setVideoId(videoId); + try { + GetPlayInfoResponse response = AliyunVedioServer.getPlayInfoResponse(config, videoId); + if(response != null){ + List playInfoList = response.getPlayInfoList(); + //播放地址 + for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) { + result.setVideoUrl(playInfo.getPlayURL()); + break; + } + GetPlayInfoResponse.VideoBase videoBase = response.getVideoBase(); + result.setDuration(videoBase.getDuration()); + result.setCoverURL(videoBase.getCoverURL()); + result.setTitle(videoBase.getTitle()); + result.setSuccess(true); + }else{ + result.setSuccess(false); + result.setMsg("未获取到视频"); + } + } catch (ClientException e) { + result.setSuccess(false); + result.setMsg("获取视频请求异常"); + } + return result; + } } From 18b5c9ce4beec3722a9196ecb38b4dd4757085e3 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 20 May 2021 13:36:50 +0800 Subject: [PATCH 14/29] tt --- .../controller/tt/TtOrderController.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtOrderController.java diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtOrderController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtOrderController.java new file mode 100644 index 000000000..692e7c907 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtOrderController.java @@ -0,0 +1,80 @@ +package com.iformall.controller.tt; + +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.tt.TtOrder; +import com.iformall.enums.EnumPayWay; +import com.iformall.exception.MallinkException; +import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxCUserBasicInfoService; +import com.iformall.service.tt.TtOrderService; +import com.iformall.utils.Constant; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + +@RestController +@RequestMapping("ttOrder") +@Api(description = "订单相关接口") +public class TtOrderController extends BaseController { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private TtOrderService ttOrderService; + + @Autowired + private WxAppinfoService wxAppinfoService; + + @Autowired + private WxCUserBasicInfoService wxCUserBasicInfoService; + + @ApiOperation("分页订单列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), + }) + public ResultData list(@ModelAttribute TtOrder order, Integer pageNum, Integer pageSize) { + + if (order == null){ + order = new TtOrder(); + } + return new ResultData(ttOrderService.listAsPage(order, pageNum, pageSize)); + } + + + + @ApiOperation("订单详情接口") + @GetMapping("detail") + @ApiImplicitParams({ + @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "String", paramType = "query", required = true) + }) + public ResultData detail(String orderId) { + if (StringUtils.isBlank(orderId) || orderId.equalsIgnoreCase(Constant.UNDEFINED)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + Long id; + try { + id = Long.valueOf(orderId); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "orderId: " + orderId + ", e: " + e.getMessage()); + } + + TtOrder order = ttOrderService.detail(id,null); + return new ResultData(order); + } + +} From 5a6619571ca2a49b688e8a9f6548f37f324d6371 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 20 May 2021 14:09:42 +0800 Subject: [PATCH 15/29] tt --- .../iformall/service/tt/TtCouponService.java | 4 + .../service/tt/impl/TtCouponServiceImpl.java | 40 ++++++++++ .../controller/tt/TtCouponController.java | 74 +++++++++++++------ 3 files changed, 97 insertions(+), 21 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java b/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java index 16d53f592..cb2fd9ff1 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java @@ -39,4 +39,8 @@ public interface TtCouponService { void deleteById(Long id); TtCoupon detail(Long productId); + + ResultData puton(Long id); + + ResultData putoff(Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index 3e4521d67..1ea0d5a11 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -3,6 +3,7 @@ package com.iformall.service.tt.impl; import com.alibaba.fastjson.JSONArray; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.tt.TtCoupon; @@ -97,7 +98,46 @@ public class TtCouponServiceImpl implements TtCouponService { @Override public TtCoupon detail(Long productId) { TtCoupon byId = this.getById(productId); + if(byId == null){ + return byId; + } byId.setAuthor(wxMerchantService.getById(byId.getMerchantId())); + if(byId.getType().equals(EnumTtCouponType.COUPON_MORE.getCode())){ + TtCoupon couponQ = new TtCoupon(); + couponQ.setColumnId(productId); + couponQ.setType(EnumTtCouponType.COUPON_MORE.getCode()); + byId.setColumnCoupons(ttCouponMapper.findList(couponQ)); + } return byId; } + + @Override + public ResultData puton(Long id) { + TtCoupon byId = this.getById(id); + if(byId == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"未找到课程"); + } + if(!byId.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_BEFOR_SHELF.getCode())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"此课程状态不允许上架或者已上架"); + } + byId.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode()); + byId.setUpdateDate(new Date()); + ttCouponMapper.updateById(byId); + return new ResultData(); + } + + @Override + public ResultData putoff(Long id) { + TtCoupon byId = this.getById(id); + if(byId == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"未找到课程"); + } + if(!byId.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"此课程状态不允许下架或者已下架"); + } + byId.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_AFTER_SHELF.getCode()); + byId.setUpdateDate(new Date()); + ttCouponMapper.updateById(byId); + return new ResultData(); + } } diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java index b85b6b6e5..fe4bc6e55 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java @@ -5,11 +5,13 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxBusiness; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCoupon; import com.iformall.domain.po.tt.TtVideoLibrary; import com.iformall.enums.*; +import com.iformall.service.WxBusinessService; import com.iformall.service.WxFlowService; import com.iformall.service.WxMerchantService; import com.iformall.service.tt.TtCouponService; @@ -64,7 +66,7 @@ public class TtCouponController extends BaseController { @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) @SystemControllerLog(description = "-列表") public ResultData list(@ModelAttribute TtCoupon record, Integer pageNum, Integer pageSize, Integer dataType) { - logger.debug("[" + getIpAddr() + "] WxCouponController::list"); + logger.debug("[" + getIpAddr() + "] TtCouponController::list"); if (record == null) record = new TtCoupon(); return new ResultData(ttCouponService.listAsPage(record, pageNum, pageSize)); } @@ -73,7 +75,7 @@ public class TtCouponController extends BaseController { @PostMapping("add") @SystemControllerLog(description = "-新增") public ResultData add(@RequestBody TtCoupon record) { - logger.debug("[" + getIpAddr() + "] WxCouponController::add"); + logger.debug("[" + getIpAddr() + "] TtCouponController::add"); if(record == null){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); } @@ -121,12 +123,12 @@ public class TtCouponController extends BaseController { } //启动投放审批 - if(record.getFlowParams() !=null && record.getFlowParams().size()>0) { - record.getFlowParams().put("businessId",record.getId()); - wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); - //修改coupon applyStatus状态为审核中 - record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); - } +// if(record.getFlowParams() !=null && record.getFlowParams().size()>0) { +// record.getFlowParams().put("businessId",record.getId()); +// wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); +// //修改coupon applyStatus状态为审核中 +// record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); +// } return resultData; } @@ -135,7 +137,7 @@ public class TtCouponController extends BaseController { @PostMapping("update") @SystemControllerLog(description = "更新") public ResultData update(@RequestBody TtCoupon record) { - logger.debug("[" + getIpAddr() + "] WxCouponController::update"); + logger.debug("[" + getIpAddr() + "] TtCouponController::update"); if (record.getId() == null) { return new ResultData(ResultData.ERROR, "缺少id"); } @@ -191,12 +193,12 @@ public class TtCouponController extends BaseController { } //启动投放审批 - if(record.getFlowParams() !=null && record.getFlowParams().size()>0) { - record.getFlowParams().put("businessId",record.getId()); - wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); - //修改coupon applyStatus状态为审核中 - record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); - } +// if(record.getFlowParams() !=null && record.getFlowParams().size()>0) { +// record.getFlowParams().put("businessId",record.getId()); +// wxFlowService.start(record.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); +// //修改coupon applyStatus状态为审核中 +// record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); +// } return resultData; } @@ -204,9 +206,12 @@ public class TtCouponController extends BaseController { @ApiOperation("根据id删除接口") @GetMapping("/del") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "券投放-删除") - public ResultData delete(Long id) { - logger.debug("[" + getIpAddr() + "] WxCouponController::delete"); + @SystemControllerLog(description = "-删除") + public ResultData delete(@RequestParam Long id) { + logger.debug("[" + getIpAddr() + "] TtCouponController::delete"); + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } ttCouponService.deleteById(id); return new ResultData(Result.SUCCESS, "删除成功", null); } @@ -214,10 +219,37 @@ public class TtCouponController extends BaseController { @ApiOperation("根据id查询接口") @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - @SystemControllerLog(description = "券投放-查询") + @SystemControllerLog(description = "") public ResultData findById(@RequestParam Long id) { - logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); - return new ResultData(ttCouponService.getById(id)); + logger.debug("[" + getIpAddr() + "] TtCouponController::findById"); + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + return new ResultData(ttCouponService.detail(id)); + } + + @ApiOperation("根据上架") + @GetMapping("/puton") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "") + public ResultData puton(@RequestParam Long id) { + logger.debug("[" + getIpAddr() + "] TtCouponController::findById");if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + + return ttCouponService.puton(id); + } + + @ApiOperation("根据下架") + @GetMapping("/putoff") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "") + public ResultData putoff(@RequestParam Long id) { + logger.debug("[" + getIpAddr() + "] TtCouponController::findById"); + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + return ttCouponService.putoff(id); } } From b99d57af8001a47e5c3531825607c2c33a0baf34 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 20 May 2021 16:37:14 +0800 Subject: [PATCH 16/29] tt --- .../domain/po/tt/TtUserCollectFollow.java | 2 + .../iformall/service/tt/TtCouponService.java | 5 ++ .../service/tt/impl/TtCouponServiceImpl.java | 30 +++++++++ .../controller/tt/TtCouponController.java | 61 ++++++++++++++----- .../controller/video/VideoController.java | 2 +- .../controller/TtCouponController.java | 33 +++++++++- 6 files changed, 114 insertions(+), 19 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java index b374c4e0f..c6f7ffd1e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtUserCollectFollow.java @@ -13,6 +13,8 @@ public class TtUserCollectFollow extends TenantEntity { protected Long id; + private Long userId; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") diff --git a/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java b/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java index cb2fd9ff1..3ab92b7f7 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java @@ -2,7 +2,9 @@ package com.iformall.service.tt; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCoupon; +import org.springframework.scheduling.annotation.Async; public interface TtCouponService { @@ -43,4 +45,7 @@ public interface TtCouponService { ResultData puton(Long id); ResultData putoff(Long id); + + @Async + void collectCoupon(TenantEntity tenantEntity,Long memberId, Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index 1ea0d5a11..30a36e39f 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -1,12 +1,18 @@ package com.iformall.service.tt.impl; import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.CommonMapper; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCoupon; +import com.iformall.domain.po.tt.TtUserCollect; import com.iformall.enums.EnumTtCouponStatus; import com.iformall.enums.EnumTtCouponType; import com.iformall.mapper.*; @@ -33,6 +39,9 @@ public class TtCouponServiceImpl implements TtCouponService { @Autowired WxMerchantService wxMerchantService; + @Autowired + TtUserCollectMapper ttUserCollectMapper; + @Override public PageInfo listAsPage(TtCoupon record, Integer pageIndex, Integer pageSize) { @@ -80,6 +89,10 @@ public class TtCouponServiceImpl implements TtCouponService { if(record.getType().equals(EnumTtCouponType.COUPON_COLUMN.getCode()) && record.getColumnCoupons() != null && record.getColumnCoupons().size() > 0){ + TtCoupon couponD = new TtCoupon(); + couponD.setColumnId(record.getId()); + couponD.setType(EnumTtCouponType.COUPON_MORE.getCode()); + ttCouponMapper.delete(new QueryWrapper(couponD)); for (TtCoupon ttc:record.getColumnCoupons()) { ttc.updateTenantInfo(record); ttc.setType(EnumTtCouponType.COUPON_MORE.getCode()); @@ -140,4 +153,21 @@ public class TtCouponServiceImpl implements TtCouponService { ttCouponMapper.updateById(byId); return new ResultData(); } + + @Override + public void collectCoupon(TenantEntity tenantEntity,Long memberId, Long id) { + final IdWorker idWorker = IdWorker.get(); + TtUserCollect userCollect = new TtUserCollect(); + userCollect.setId(idWorker.nextId()); + userCollect.updateTenantInfo(tenantEntity); + userCollect.setUserId(memberId); + userCollect.setCouponId(id); + userCollect.setCreateDate(new Date()); + userCollect.setUpdateDate(new Date()); + try { + ttUserCollectMapper.insert(userCollect); + } catch (Exception e) { +// e.printStackTrace(); + } + } } diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java index fe4bc6e55..fda0143a4 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java @@ -68,6 +68,7 @@ public class TtCouponController extends BaseController { public ResultData list(@ModelAttribute TtCoupon record, Integer pageNum, Integer pageSize, Integer dataType) { logger.debug("[" + getIpAddr() + "] TtCouponController::list"); if (record == null) record = new TtCoupon(); + record.updateTenantInfo(getTenantInfo()); return new ResultData(ttCouponService.listAsPage(record, pageNum, pageSize)); } @@ -97,26 +98,56 @@ public class TtCouponController extends BaseController { if(record.getBusinessId() == null){ return new ResultData(ErrorCode.SYS_SERVER_ERROR,"未选择分类"); } - if(StringUtils.isBlank(record.getVideoId())){ -// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"未上传视频"); - }else{ - VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(record.getVideoId()); - if(result.isSuccess()){ - record.setVideoTime(result.getDuration()); - TtVideoLibrary video = new TtVideoLibrary(); - video.updateTenantInfo(tenantEntity); - video.setVideoId(record.getVideoId()); - video.setVideoUrl(result.getVideoUrl()); - video.setPreview(result.getCoverURL()); - video.setDuration(result.getDuration()); - ttVideoLibraryService.saveOrUpdate(video); + if(record.getType() == null){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"type为空"); + } + if(record.getType().equals(EnumTtCouponType.COUPON_SINGLE.getCode())){ + if(StringUtils.isBlank(record.getVideoId())){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"未上传视频"); }else{ - return new ResultData(ErrorCode.SYS_SERVER_ERROR,result.getMsg()); + VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(record.getVideoId()); + if(result.isSuccess()){ + record.setVideoTime(result.getDuration()); + TtVideoLibrary video = new TtVideoLibrary(); + video.updateTenantInfo(tenantEntity); + video.setVideoId(record.getVideoId()); + video.setVideoUrl(result.getVideoUrl()); + video.setPreview(result.getCoverURL()); + video.setDuration(result.getDuration()); + ttVideoLibraryService.saveOrUpdate(video); + }else{ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,result.getMsg()); + } } + }else if(record.getType().equals(EnumTtCouponType.COUPON_COLUMN.getCode())){ + if(record.getColumnCoupons() != null && record.getColumnCoupons().size() > 0){ + for (TtCoupon ttc:record.getColumnCoupons()) { + if(StringUtils.isBlank(ttc.getVideoId())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "部分未上传视频"); + } + VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(ttc.getVideoId()); + if(result.isSuccess()){ + ttc.setVideoTime(result.getDuration()); + TtVideoLibrary video = new TtVideoLibrary(); + video.updateTenantInfo(tenantEntity); + video.setVideoId(record.getVideoId()); + video.setVideoUrl(result.getVideoUrl()); + video.setPreview(result.getCoverURL()); + video.setDuration(result.getDuration()); + ttVideoLibraryService.saveOrUpdate(video); + }else{ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,result.getMsg()); + } + } + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "未上传视频"); + } + }else{ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"未识别type类型"); } - record.setType(EnumTtCouponType.COUPON_SINGLE.getCode()); +// record.setType(EnumTtCouponType.COUPON_SINGLE.getCode()); ResultData resultData = ttCouponService.saveOrUpdate(record); if (resultData.code != 200) { return resultData; diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java index 1ba72eead..5eeb548b2 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/video/VideoController.java @@ -76,7 +76,7 @@ public class VideoController extends BaseController { /** * 上传视频 * - * @param multiReq + * @param * @return * @throws Exception */ diff --git a/mallinkTTCApi/src/main/java/com/iformall/controller/TtCouponController.java b/mallinkTTCApi/src/main/java/com/iformall/controller/TtCouponController.java index 8bc00f59e..dc95afb1f 100644 --- a/mallinkTTCApi/src/main/java/com/iformall/controller/TtCouponController.java +++ b/mallinkTTCApi/src/main/java/com/iformall/controller/TtCouponController.java @@ -1,7 +1,9 @@ package com.iformall.controller; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.tt.TtCoupon; +import com.iformall.exception.MallinkException; import com.iformall.service.tt.TtCouponService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -28,7 +30,7 @@ public class TtCouponController extends BaseController { @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) public ResultData list(@ModelAttribute TtCoupon record, Integer pageNum, Integer pageSize, Integer dataType) { - logger.debug("[" + getIpAddr() + "] WxCouponController::list"); + logger.debug("[" + getIpAddr() + "] TtCouponController::list"); if (record == null) record = new TtCoupon(); return new ResultData(ttCouponService.listAsPage(record, pageNum, pageSize)); } @@ -37,8 +39,33 @@ public class TtCouponController extends BaseController { @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findById(@RequestParam Long id) { - logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); - return new ResultData(ttCouponService.getById(id)); + logger.debug("[" + getIpAddr() + "] TtCouponController::findById"); + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + return new ResultData(ttCouponService.detail(id)); + } + + @ApiOperation("收藏") + @GetMapping("/collectCoupon") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + public ResultData collectCoupon(@RequestParam Long id) { + logger.debug("[" + getIpAddr() + "] TtCouponController::findById"); + if (id == null) { + return new ResultData(ResultData.ERROR, "缺少id"); + } + TtCoupon byId = ttCouponService.getById(id); + if(byId == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"找不到课程"); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (MallinkException e) { + return new ResultData(e.getErrorCode(), e.getMessage()); + } + ttCouponService.collectCoupon(getTenantInfo(),memberId,byId.getId()); + return new ResultData(); } } From efea311b189da2f174ca3875f37a986907fcd53c Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 20 May 2021 16:57:25 +0800 Subject: [PATCH 17/29] tt --- .../com/iformall/domain/po/tt/TtCoupon.java | 5 +++- .../main/resources/mapper/TtCouponMapper.xml | 4 ++- .../controller/basic/UeditorController.java | 27 +++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 mallinkTTAdmin/src/main/java/com/iformall/controller/basic/UeditorController.java diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java index 42095ecee..200d35d56 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java @@ -60,6 +60,9 @@ public class TtCoupon extends TenantEntity { private String videoId; @io.swagger.annotations.ApiModelProperty(value="视频时长(秒)",name="videoTime") private String videoTime; + @io.swagger.annotations.ApiModelProperty(value="",name="videoUrl") + private String videoUrl; + @io.swagger.annotations.ApiModelProperty(value="富文本内容",name="html") private String html; @@ -75,7 +78,7 @@ public class TtCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="原价",name="origPrice") private Integer origPrice; - @io.swagger.annotations.ApiModelProperty(value="是否可预览",name="isPreview") + @io.swagger.annotations.ApiModelProperty(value="是否可预览",name="isPreview")//弃用 private Integer isPreview; @io.swagger.annotations.ApiModelProperty(value="预览时长",name="previewDuration") private Integer previewDuration; diff --git a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml index 91c7c14d0..fd598536a 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml @@ -13,6 +13,8 @@ + + @@ -46,7 +48,7 @@ c.`id`, c.`tenant_id`, c.`parent_tenant_id`, c.`type`, c.`cover_img`, c.`cover_picture`, c.`detail_picture`, - c.`title`, c.`sub_title`, c.`video_id`, c.`video_time`, c.`html`, c.`is_landscape`, c.`is_payment`, + c.`title`, c.`sub_title`, c.`video_id`, c.`video_time`,c.`video_url` c.`html`, c.`is_landscape`, c.`is_payment`, c.`sale_price`, c.`orig_price`, c.`is_preview`, c.`preview_duration`, c.`detail`, c.`false_sell_count`, c.`dy_title`, c.`inventory`, c.`remark`, c.`status`, c.`create_date`, c.`update_date`, c.`see_count`, c.`sell_count`, c.`assess_count`, c.`collect_count`, c.`is_del`, diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/basic/UeditorController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/basic/UeditorController.java new file mode 100644 index 000000000..37e3c9fb2 --- /dev/null +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/basic/UeditorController.java @@ -0,0 +1,27 @@ +package com.iformall.controller.basic; + +import com.iformall.ueditor.ActionEnter; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + + +@RestController +@RequestMapping("/ue") +@Api(description = "网页bannner图接口") +public class UeditorController { + + @Autowired + private ActionEnter actionEnter; + + @ResponseBody + @RequestMapping("/ueditor/exec") + public Object exe(HttpServletRequest request){ + return actionEnter.exec(request); + } + +} From 7e6cd2f150f93500f233e674d9cdda3640030b94 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 20 May 2021 18:37:31 +0800 Subject: [PATCH 18/29] tt --- .../douyin/miniapp/api/TtMaQrcode.java | 35 +++++++++++++ .../douyin/miniapp/api/TtMaQrcodeService.java | 31 +++++++++++ .../api/impl/TtMaQrcodeServiceImpl.java | 26 ++++++++++ .../controller/base/BaseController.java | 52 +++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcode.java create mode 100644 mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcodeService.java create mode 100644 mallinkService/src/main/java/com/iformall/douyin/miniapp/api/impl/TtMaQrcodeServiceImpl.java diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcode.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcode.java new file mode 100644 index 000000000..d041f204d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcode.java @@ -0,0 +1,35 @@ +package com.iformall.douyin.miniapp.api; + +import cn.binarywang.wx.miniapp.bean.AbstractWxMaQrcodeWrapper; +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * @author Binary Wang + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class TtMaQrcode extends AbstractWxMaQrcodeWrapper implements Serializable { + private static final long serialVersionUID = 5777119669111011584L; + private String appname; + private String path; + private int width = 430; + + public TtMaQrcode(String appname, String path, int width) { + this.appname = appname; + this.path = path; + this.width = width; + } + + public static TtMaQrcode fromJson(String json) { + return WxMaGsonBuilder.create().fromJson(json, TtMaQrcode.class); + } + + @Override + public String toString() { + return WxMaGsonBuilder.create().toJson(this); + } +} diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcodeService.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcodeService.java new file mode 100644 index 000000000..f212aae8e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaQrcodeService.java @@ -0,0 +1,31 @@ +package com.iformall.douyin.miniapp.api; + +import me.chanjar.weixin.common.error.WxErrorException; + +import java.io.File; + +/** + *
+ * 二维码相关操作接口.
+ *
+ * 
+ * + * @author Binary Wang + */ +public interface TtMaQrcodeService { + + String GET_TTACODE_URL = "https://developer.toutiao.com/api/apps/qrcode"; + + + /** + * 接口A: 获取小程序码. + * + * @param path 不能为空,最大长度 128 字节 + * @param width 默认430 二维码的宽度 + * @return 文件对象 + * @throws WxErrorException 异常 + */ + File createTtaCode(String appname, String path, int width) throws WxErrorException; + + +} diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/impl/TtMaQrcodeServiceImpl.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/impl/TtMaQrcodeServiceImpl.java new file mode 100644 index 000000000..d12fb77aa --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/impl/TtMaQrcodeServiceImpl.java @@ -0,0 +1,26 @@ +package com.iformall.douyin.miniapp.api.impl; + +import cn.binarywang.wx.miniapp.util.QrcodeRequestExecutor; +import com.iformall.douyin.miniapp.api.TtMaQrcode; +import com.iformall.douyin.miniapp.api.TtMaQrcodeService; +import com.iformall.douyin.miniapp.api.TtMaService; +import lombok.AllArgsConstructor; +import me.chanjar.weixin.common.error.WxErrorException; + +import java.io.File; + +/** + * @author Binary Wang + */ +@AllArgsConstructor +public class TtMaQrcodeServiceImpl implements TtMaQrcodeService { + + private TtMaService ttMaService; + + @Override + public File createTtaCode(String appname, String path, int width) throws WxErrorException { + final QrcodeRequestExecutor executor = new QrcodeRequestExecutor(this.ttMaService.getRequestHttp()); + return this.ttMaService.execute(executor, GET_TTACODE_URL, new TtMaQrcode(appname,path, width)); + } + +} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/base/BaseController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/base/BaseController.java index 37d7924ed..4ca648dff 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/base/BaseController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/base/BaseController.java @@ -6,12 +6,19 @@ import java.text.SimpleDateFormat; import java.util.Date; import com.iformall.domain.po.MallUserInfo; +import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.douyin.miniapp.api.TtMaService; +import com.iformall.service.WxAppinfoService; import com.iformall.shiro.UserSession; +import com.iformall.utils.Constant; import com.iformall.utils.IPUtil; +import com.iformall.utils.MaUtil; +import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RestController; @@ -23,6 +30,9 @@ import javax.servlet.http.HttpServletRequest; @RestController public class BaseController { + @Autowired + private WxAppinfoService wxAppinfoService; + @InitBinder public void InitBinder(WebDataBinder dataBinder) { dataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() { @@ -60,6 +70,22 @@ public class BaseController { // return tenantId; // } + public TtMaService getWeappServiceByAppInfo(WxAppinfo appinfo) { + TtMaService ttMaService = MaUtil.getTtappService(appinfo); + if (StringUtils.isBlank(appinfo.getAccessToken())) { + // 如果没有accessToken,主动获取保存到数据库中,下次访问可以拿来使用 + updateAppAccessToken(appinfo, ttMaService); + + } else { + // 检查token是否已过期, 1小时就重新获取 + Date curDate = new Date(); + if (curDate.getTime() > appinfo.getLastTokenTime().getTime() + Constant.H_EXPIRE) { + updateAppAccessToken(appinfo, ttMaService); + } + } + return ttMaService; + } + /** * 返回租户信息 * 集团版帐号tenantId为空,parentTenantId为集团tenantId @@ -106,6 +132,32 @@ public class BaseController { return null; } + /** + * WxAppInfo更新accessToken + * + * @param wxAppinfo + * @param TtMaService + */ + private void updateAppAccessToken(WxAppinfo wxAppinfo, TtMaService TtMaService) { + try { + String accessToken = TtMaService.getAccessToken(true); + WxAppinfo updateApp = new WxAppinfo(); + updateApp.setId(wxAppinfo.getId()); + updateApp.setAccessToken(accessToken); + updateApp.setLastTokenTime(new Date()); + updateApp.setExpiresIn(7200); + wxAppinfo.setAccessToken(updateApp.getAccessToken()); + wxAppinfo.setLastTokenTime(updateApp.getLastTokenTime()); + wxAppinfo.setExpiresIn(updateApp.getExpiresIn()); + wxAppinfoService.saveOrUpdate(updateApp); + + } catch (WxErrorException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + public String getIpAddr() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String ipaddress = IPUtil.getIpAddr(request); From e96dcab7fc3e4522b50f3585b2a16137e51aa1e2 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 09:44:36 +0800 Subject: [PATCH 19/29] tt --- .../service/tt/impl/TtCouponServiceImpl.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index 30a36e39f..d9b3dc753 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -15,6 +15,7 @@ import com.iformall.domain.po.tt.TtCoupon; import com.iformall.domain.po.tt.TtUserCollect; import com.iformall.enums.EnumTtCouponStatus; import com.iformall.enums.EnumTtCouponType; +import com.iformall.enums.EnumYesOrNo; import com.iformall.mapper.*; import com.iformall.service.WxMerchantService; import com.iformall.service.tt.TtCouponService; @@ -63,6 +64,13 @@ public class TtCouponServiceImpl implements TtCouponService { if (StringUtils.isNotEmpty(record.getOrigPriceStr())) { record.setOrigPrice(new BigDecimal(record.getOrigPriceStr()).multiply(new BigDecimal(100)).intValue()); } + if(record.getSalePrice() == null || record.getSalePrice().intValue() == 0){ + record.setSalePrice(0); + record.setIsPayment(EnumYesOrNo.NO.getCode()); + record.setPreviewDuration(0); + }else{ + record.setIsPayment(EnumYesOrNo.YES.getCode()); + } if (StringUtils.isBlank(record.getCoverPicture())) { List strList = new ArrayList(); @@ -74,7 +82,10 @@ public class TtCouponServiceImpl implements TtCouponService { } } - record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_DRAFT.getCode()); + if(record.getStatus() == null){ + record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_DRAFT.getCode()); + } + if (record.getId() == null) { final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); From 0e40d3bae8838baef7e85d9e2505aa3e38ed3f6f Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 10:14:28 +0800 Subject: [PATCH 20/29] tt --- .../java/com/iformall/service/tt/impl/TtCouponServiceImpl.java | 3 --- mallinkService/src/main/resources/mapper/TtCouponMapper.xml | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index d9b3dc753..28fa30ab0 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -1,12 +1,9 @@ package com.iformall.service.tt.impl; import com.alibaba.fastjson.JSONArray; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.iformall.common.CommonMapper; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; diff --git a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml index fd598536a..41af4622c 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml @@ -48,7 +48,7 @@ c.`id`, c.`tenant_id`, c.`parent_tenant_id`, c.`type`, c.`cover_img`, c.`cover_picture`, c.`detail_picture`, - c.`title`, c.`sub_title`, c.`video_id`, c.`video_time`,c.`video_url` c.`html`, c.`is_landscape`, c.`is_payment`, + c.`title`, c.`sub_title`, c.`video_id`, c.`video_time`,c.`video_url`, c.`html`, c.`is_landscape`, c.`is_payment`, c.`sale_price`, c.`orig_price`, c.`is_preview`, c.`preview_duration`, c.`detail`, c.`false_sell_count`, c.`dy_title`, c.`inventory`, c.`remark`, c.`status`, c.`create_date`, c.`update_date`, c.`see_count`, c.`sell_count`, c.`assess_count`, c.`collect_count`, c.`is_del`, From b8715584ed46116e201a8bee1a33e9e93fe61fc6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 10:47:10 +0800 Subject: [PATCH 21/29] tt --- .../service/tt/impl/TtCouponServiceImpl.java | 3 ++- .../controller/tt/TtCouponController.java | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index 28fa30ab0..301f63d1d 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -138,7 +138,8 @@ public class TtCouponServiceImpl implements TtCouponService { if(byId == null){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"未找到课程"); } - if(!byId.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_BEFOR_SHELF.getCode())){ + if(!byId.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_BEFOR_SHELF.getCode()) + && !byId.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_AFTER_SHELF.getCode())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"此课程状态不允许上架或者已上架"); } byId.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode()); diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java index fda0143a4..ff30eeb5d 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java @@ -83,6 +83,17 @@ public class TtCouponController extends BaseController { TenantEntity tenantEntity = getTenantInfo(); record.updateTenantInfo(tenantEntity); + if(record.getId() != null){ + TtCoupon coupon = ttCouponService.getById(record.getId()); + if (null == coupon || EnumDelFlag.YES.getCode().equals(record.getIsDel())) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到课程,或课程已删除"); + } + if(!coupon.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_DRAFT.getCode()) + && !coupon.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_REJECT.getCode())){ + return new ResultData(ErrorCode.SYS_SERVER_ERROR,"该课程状态不允许修改"); + } + } + if(record.getMerchantId() == null){ WxMerchant merchantQ = new WxMerchant(); merchantQ.updateTenantInfo(tenantEntity); @@ -174,9 +185,7 @@ public class TtCouponController extends BaseController { } TenantEntity tenantEntity = getTenantInfo(); record.updateTenantInfo(tenantEntity); - if(EnumDelFlag.YES.getCode().equals(record.getIsDel())){ - return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到课程,或课程已删除"); - } + TtCoupon coupon = ttCouponService.getById(record.getId()); if (null == coupon || EnumDelFlag.YES.getCode().equals(record.getIsDel())) { return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到课程,或课程已删除"); @@ -191,6 +200,7 @@ public class TtCouponController extends BaseController { record.setMerchantId(list.get(0).getId()); } } + if(record.getMerchantId() == null){ return new ResultData(ErrorCode.SYS_SERVER_ERROR,"找不到作者"); } From 29bb0985f58aa04a8fcde0d618f28841aa3157ad Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 11:08:43 +0800 Subject: [PATCH 22/29] tt --- .../com/iformall/service/tt/impl/TtCouponServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index 301f63d1d..ab635ffc1 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -7,6 +7,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.tt.TtCoupon; import com.iformall.domain.po.tt.TtUserCollect; @@ -122,8 +123,11 @@ public class TtCouponServiceImpl implements TtCouponService { if(byId == null){ return byId; } - byId.setAuthor(wxMerchantService.getById(byId.getMerchantId())); - if(byId.getType().equals(EnumTtCouponType.COUPON_MORE.getCode())){ + WxMerchant author = wxMerchantService.getById(byId.getMerchantId()); + byId.setMerchantName(author.getName()); + byId.setMerchantPic(author.getImgUrl()); +// byId.setAuthor(wxMerchantService.getById(byId.getMerchantId())); + if(byId.getType().equals(EnumTtCouponType.COUPON_COLUMN.getCode())){ TtCoupon couponQ = new TtCoupon(); couponQ.setColumnId(productId); couponQ.setType(EnumTtCouponType.COUPON_MORE.getCode()); From b5ecd5f332bf476a9315198f958a25cb3b12013a Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 11:20:00 +0800 Subject: [PATCH 23/29] tt --- .../com/iformall/service/tt/impl/TtCouponServiceImpl.java | 6 +++--- mallinkService/src/main/resources/mapper/TtCouponMapper.xml | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index ab635ffc1..43d4216a7 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -123,9 +123,9 @@ public class TtCouponServiceImpl implements TtCouponService { if(byId == null){ return byId; } - WxMerchant author = wxMerchantService.getById(byId.getMerchantId()); - byId.setMerchantName(author.getName()); - byId.setMerchantPic(author.getImgUrl()); +// WxMerchant author = wxMerchantService.getById(byId.getMerchantId()); +// byId.setMerchantName(author.getName()); +// byId.setMerchantPic(author.getImgUrl()); // byId.setAuthor(wxMerchantService.getById(byId.getMerchantId())); if(byId.getType().equals(EnumTtCouponType.COUPON_COLUMN.getCode())){ TtCoupon couponQ = new TtCoupon(); diff --git a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml index 41af4622c..f042649a4 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml @@ -129,7 +129,10 @@ From 946840dd609255dbb44c23c13907cc8f03ac337e Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 11:27:04 +0800 Subject: [PATCH 24/29] tt --- .../java/com/iformall/controller/tt/TtCouponController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java index ff30eeb5d..850bfc75b 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java @@ -119,6 +119,7 @@ public class TtCouponController extends BaseController { VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(record.getVideoId()); if(result.isSuccess()){ record.setVideoTime(result.getDuration()); + record.setVideoUrl(result.getVideoUrl()); TtVideoLibrary video = new TtVideoLibrary(); video.updateTenantInfo(tenantEntity); video.setVideoId(record.getVideoId()); @@ -139,6 +140,7 @@ public class TtCouponController extends BaseController { VideUploadResult result = videoFactory.getExcutor(videoType).getVideoDetail(ttc.getVideoId()); if(result.isSuccess()){ ttc.setVideoTime(result.getDuration()); + ttc.setVideoUrl(result.getVideoUrl()); TtVideoLibrary video = new TtVideoLibrary(); video.updateTenantInfo(tenantEntity); video.setVideoId(record.getVideoId()); From 60497e854f532f8c238aa01893236e36a4c41eef Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 12:03:33 +0800 Subject: [PATCH 25/29] tt --- .../java/com/iformall/service/tt/impl/TtCouponServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index 43d4216a7..e88ded4aa 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -83,6 +83,9 @@ public class TtCouponServiceImpl implements TtCouponService { if(record.getStatus() == null){ record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_DRAFT.getCode()); } + if(!record.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_DRAFT.getCode())){ + record.setStatus(EnumTtCouponStatus.TTCOUPON_STATUS_EXAMINE.getCode()); + } if (record.getId() == null) { final IdWorker idWorker = IdWorker.get(); From 1951e4ea6c92f9d6a2db93d0f62bb687079fe204 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 15:18:22 +0800 Subject: [PATCH 26/29] tt --- .../java/com/iformall/enums/EnumPayWay.java | 2 +- .../service/impl/WxCouponSendServiceImpl.java | 33 ++++++++++++++----- .../impl/WxThirdPartyOrdersServiceImpl.java | 8 +++++ 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java b/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java index 43e6a57dd..e9717a7ca 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java @@ -15,7 +15,7 @@ public enum EnumPayWay { PAY_WAY_POS_NEU(11, "POS 东软",EnumPayWayType.NEU_POS,null,EnumCardSpendFrom.POS), PAY_WAY_NOT_UNPAY_MERCHANT(91, "商户注券,无需支付",null,null,null), PAY_WAY_NOT_UNPAY_VERRIFY(92, "核销发券,无需支付",null,null,null), - PAY_WAY_NOT_UNPAY_B_MA(93, "B端扫码支付发券,无需支付",null,null,null), + PAY_WAY_NOT_UNPAY_B_MA(93, "支付发券,无需支付",null,null,null), PAY_WAY_NOT_UNPAY_CAR_STOP(94, "停车发券,无需支付",null,null,null), PAY_WAY_NOT_UNPAY_SYSTEM_SEND(95, "系统定时发放券,无需支付",null,null,null), PAY_WAY_NOT_UNPAY_BATCH_SEND(96, "后台批量发券,无需支付",null,null,null), diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java index c6c63d459..8bd6eb10c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java @@ -252,20 +252,35 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { return false; } else if (wxCouponSend.getSendType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())) { + if (param.getClass().equals(WxOrder.class)){ + WxOrder wxOrder = (WxOrder) param; - WxOrder wxOrder = (WxOrder) param; + try { + JSONObject jo = JSONObject.parseObject(wxCouponSend.getConditions()); + WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(wxOrder.getProductId()); - try { - JSONObject jo = JSONObject.parseObject(wxCouponSend.getConditions()); - WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(wxOrder.getProductId()); + if (wxMerchantBUser.getMerchantId() != null + && wxMerchantBUser.getMerchantId().equals(jo.getLong("id"))) { + return true; + } + } catch (Exception e) { + logger.error("收银发券条件判断错误:ID=" + wxCouponSend.getId() + e.getMessage()); + } + }else if(param.getClass().equals(WxThirdPartyOrders.class)){ + WxThirdPartyOrders thirdOrder = (WxThirdPartyOrders) param; - if (wxMerchantBUser.getMerchantId() != null - && wxMerchantBUser.getMerchantId().equals(jo.getLong("id"))) { - return true; + try { + JSONObject jo = JSONObject.parseObject(wxCouponSend.getConditions()); + + if (thirdOrder.getMerchantId() != null + && thirdOrder.getMerchantId().equals(jo.getLong("id"))) { + return true; + } + } catch (Exception e) { + logger.error("收银发券条件判断错误:ID=" + wxCouponSend.getId() + e.getMessage()); } - } catch (Exception e) { - logger.error("收银发券条件判断错误:ID=" + wxCouponSend.getId() + e.getMessage()); } + return false; } else if (wxCouponSend.getSendType().equals(EnumCouponSendSendType.COUPON_VERIFY.getCode())) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java index e49f86517..854cebeb1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java @@ -47,6 +47,8 @@ public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService @Autowired WxCreditHistoryService wxCreditHistoryService; + @Autowired + WxCouponSendService wxCouponSendService; @Override @@ -172,6 +174,12 @@ public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService record.setPointsUpdateTime(creditHistory.getCreateDate()); this.updatePoints(record); } + + try { + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, record,EnumPayWay.PAY_WAY_NOT_UNPAY_B_MA); + } catch (Exception e) { + logger.error("B端刷卡支付发券: " + e.getMessage()); + } redisLock.unlock(lockKey, timeStr); }else { logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey); From ddad6ae78640f6b013790e6a3c22f2e1b7b6c730 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 16:15:30 +0800 Subject: [PATCH 27/29] tt --- .../service/impl/WxCouponSendServiceImpl.java | 16 +++++++++++----- .../impl/WxThirdPartyOrdersServiceImpl.java | 12 +++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java index 8bd6eb10c..516bb55a1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java @@ -320,12 +320,18 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { case COUPON_VERIFY: case B_MICROPAY: case C_ORDER: - if (!param.getClass().equals(WxOrder.class)) + if (param.getClass().equals(WxOrder.class)){ + WxOrder order = (WxOrder) param; + cUserId = order.getCUserId(); + tenantEntity = order; + break; + }else if(param.getClass().equals(WxThirdPartyOrders.class)){ + WxThirdPartyOrders thirdOrder = (WxThirdPartyOrders) param; + cUserId = thirdOrder.getCUserId(); + tenantEntity = thirdOrder; + }else{ return false; - WxOrder order = (WxOrder) param; - cUserId = order.getCUserId(); - tenantEntity = order; - break; + } default: return false; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java index 854cebeb1..7082e88c1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java @@ -173,13 +173,15 @@ public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService record.setIncreasedPoints(creditNum); record.setPointsUpdateTime(creditHistory.getCreateDate()); this.updatePoints(record); - } - try { - wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, record,EnumPayWay.PAY_WAY_NOT_UNPAY_B_MA); - } catch (Exception e) { - logger.error("B端刷卡支付发券: " + e.getMessage()); + try { + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.B_MICROPAY, record,EnumPayWay.PAY_WAY_NOT_UNPAY_B_MA); + } catch (Exception e) { + logger.error("B端刷卡支付发券: " + e.getMessage()); + } } + + redisLock.unlock(lockKey, timeStr); }else { logger.debug("CacheAspect 读库等待中, key:{}: " + lockKey); From 2969c4a560b4f2236762e9478cd9dde9ea6734a6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 16:26:48 +0800 Subject: [PATCH 28/29] tt --- .../java/com/iformall/service/impl/WxCouponSendServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java index 516bb55a1..0841ff00d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java @@ -329,6 +329,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { WxThirdPartyOrders thirdOrder = (WxThirdPartyOrders) param; cUserId = thirdOrder.getCUserId(); tenantEntity = thirdOrder; + break; }else{ return false; } From d27f0e6de138c0d2fc795a59d8b72853207f2172 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 21 May 2021 16:44:11 +0800 Subject: [PATCH 29/29] tt --- .../com/iformall/service/tt/impl/TtCouponServiceImpl.java | 3 +++ mallinkService/src/main/resources/mapper/TtCouponMapper.xml | 2 +- .../java/com/iformall/controller/tt/TtCouponController.java | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index e88ded4aa..2f0d9ca46 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -22,6 +22,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; @@ -54,6 +56,7 @@ public class TtCouponServiceImpl implements TtCouponService { @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public ResultData saveOrUpdate(TtCoupon record) { if (StringUtils.isNotEmpty(record.getSalePriceStr())) { diff --git a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml index f042649a4..d22b3554e 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml @@ -57,7 +57,7 @@ - where c.`is_del` = 0 + where c.`is_del` = 0 and c.`type` != 3 and c.`id` = #{id} diff --git a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java index 850bfc75b..dac463e2c 100644 --- a/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java +++ b/mallinkTTAdmin/src/main/java/com/iformall/controller/tt/TtCouponController.java @@ -69,6 +69,11 @@ public class TtCouponController extends BaseController { logger.debug("[" + getIpAddr() + "] TtCouponController::list"); if (record == null) record = new TtCoupon(); record.updateTenantInfo(getTenantInfo()); +// if(record.getType() == null || record.getType().equals(EnumTtCouponType.COUPON_SINGLE.getCode())){ +// record.setType(EnumTtCouponType.COUPON_SINGLE.getCode()); +// }else{ +// record.setType(EnumTtCouponType.COUPON_COLUMN.getCode()); +// } return new ResultData(ttCouponService.listAsPage(record, pageNum, pageSize)); }