diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/TtPoiPlanController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/TtPoiPlanController.java index 9cb9baff6..d387033f0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/TtPoiPlanController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/TtPoiPlanController.java @@ -1,19 +1,15 @@ package com.iformall.controller.basic; +import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; -import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.TtCouponChannelPoi; -import com.iformall.domain.po.TtMerchantPoi; -import com.iformall.douyin.web.api.TtWebService; -import com.iformall.douyin.web.bean.PoiPlan; -import com.iformall.enums.EnumSupplierMathStatus; +import com.iformall.domain.po.TtPoiTakeRate; +import com.iformall.domain.po.base.BaseEntity; import com.iformall.service.TtCouponGoodsService; -import com.iformall.service.TtGoodsCategoryService; -import com.iformall.service.TtMerchantPoiService; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -110,6 +106,21 @@ public class TtPoiPlanController extends BaseController { return ttCouponGoodsService.poiPlanUpdateStatus(getTenantInfo(),planId,status); } + @ApiOperation("分页列表接口") + @GetMapping("takeRate") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + @SystemControllerLog(description = "列表") + public ResultData takeRateList(@ModelAttribute TtPoiTakeRate record, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::list"); + if (null == record) record = new TtPoiTakeRate(); + record.updateTenantInfo(getTenantInfo()); + record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); + final PageInfo page = ttCouponGoodsService.takeRateListAsPage(record, pageNum, pageSize); + return new ResultData(page); + } + @ApiOperation("商品达人分佣配置") @PostMapping("takeRate") @SystemControllerLog(description = "更新") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgModelController.java b/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgModelController.java index 8a9ee6640..2fc0cf38a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgModelController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgModelController.java @@ -7,6 +7,7 @@ import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.WxMsgModel; +import com.iformall.enums.EnumMsgModelType; import com.iformall.service.WxMsgModelService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -47,6 +48,9 @@ public class WxMsgModelController extends BaseController { //Assert.notNull(wxMsgModel.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxMsgModel.updateTenantInfo(getTenantInfo()); + if(wxMsgModel.getTemplateType() == null){ + wxMsgModel.setTemplateType(EnumMsgModelType.TZ.getCode()); + } return wxMsgModelService.saveOrUpdate(wxMsgModel); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 289a37bfd..ca9b52487 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -171,10 +171,10 @@ public class WxOrderController extends BaseController { header.setNonce(request.getHeader("Byte-Nonce-Str")); header.setSigned(request.getHeader("Byte-Signature")); - logger.info("支付2.0预下单回调---header{}"+header.toString()); +// logger.info("支付2.0预下单回调---header{}"+header.toString()); String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); - logger.info("支付2.0预下单回调---body{}"+body); +// logger.info("支付2.0预下单回调---body{}"+body); try { JSONObject jsonObject = JSONObject.parseObject(body); String msg = jsonObject.getString("msg"); @@ -183,7 +183,7 @@ public class WxOrderController extends BaseController { String app_id = msgObject.getString("app_id"); String open_id = msgObject.getString("open_id"); //透传字段 - Map couponMap = new HashMap<>(); + Long composeOrderId = null; try{ String cp_extra = msgObject.getString("cp_extra"); if(StringUtils.isBlank(cp_extra)){ @@ -191,10 +191,12 @@ public class WxOrderController extends BaseController { map.put("err_tips","缺少透传字段"); return map; } - couponMap = JSONObject.parseObject(cp_extra, Map.class); + Map couponMap = JSONObject.parseObject(cp_extra, Map.class); + String idstr = couponMap.get("composeOrderId"); + composeOrderId = Long.parseLong(idstr); }catch(Exception e){ } - if(couponMap.isEmpty()){ + if(composeOrderId == null){ map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); map.put("err_tips","透传字段格式不正确"); return map; @@ -231,23 +233,15 @@ public class WxOrderController extends BaseController { TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); CreateOrderCallback createOrderCallback = ttPayService.parseOrderNotifyV2Result(body, header); + JSONObject allExtParam = new JSONObject(); allExtParam.put("order_id",createOrderCallback.getOrderId()); allExtParam.put("total_amount",createOrderCallback.getTotalAmount()); allExtParam.put("discount",createOrderCallback.getDiscount()); allExtParam.put("open_id",createOrderCallback.getOpenId()); - List list = new ArrayList<>(); - for (CreateOrderCallback.Good good:createOrderCallback.getGoods()) { - PlatPushOrderSaveDto dto = new PlatPushOrderSaveDto(); - dto.setCouponChannelId(Long.parseLong(couponMap.get(good.getGoodsId()))); - dto.setCount(good.getQuantity()); - dto.setExtParam(JSON.toJSONString(good.getItemOrderInfoList())); - list.add(dto); - } - - ResultData resultData = wxOrderService.platPushSaveOrder(true, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toJSONString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); - logger.info("resultData{}"+JSON.toJSONString(resultData)); + ResultData resultData = wxOrderService.handlerPushOrder(tenantEntity,composeOrderId,allExtParam.toString(),createOrderCallback.getGoods()); + if(resultData.code == 200){ WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); @@ -294,6 +288,141 @@ public class WxOrderController extends BaseController { } } +// @AuthIgnore +// @ApiOperation(value = "抖音支付2.0与下单回调推送订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") +// @PostMapping("douyinPushOrder") +// public Map douyinPushOrder(HttpServletRequest request) { +// +// Map map = new HashMap(); +// +// SignatureHeader header = new SignatureHeader(); +// header.setTimeStamp(request.getHeader("Byte-Timestamp")); +// header.setNonce(request.getHeader("Byte-Nonce-Str")); +// header.setSigned(request.getHeader("Byte-Signature")); +// +// logger.info("支付2.0预下单回调---header{}"+header.toString()); +// +// String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); +// logger.info("支付2.0预下单回调---body{}"+body); +// try { +// JSONObject jsonObject = JSONObject.parseObject(body); +// String msg = jsonObject.getString("msg"); +// +// JSONObject msgObject = JSONObject.parseObject(msg); +// String app_id = msgObject.getString("app_id"); +// String open_id = msgObject.getString("open_id"); +// //透传字段 +// Map couponMap = new HashMap<>(); +// try{ +// String cp_extra = msgObject.getString("cp_extra"); +// if(StringUtils.isBlank(cp_extra)){ +// map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); +// map.put("err_tips","缺少透传字段"); +// return map; +// } +// couponMap = JSONObject.parseObject(cp_extra, Map.class); +// }catch(Exception e){ +// } +// if(couponMap.isEmpty()){ +// map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); +// map.put("err_tips","透传字段格式不正确"); +// return map; +// } +// +// //验证app +// WxAppinfo appinfo = wxAppinfoService.getByAppId(app_id); +// if(appinfo == null || !EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) +// || !EnumAppType.C.getCode().equals(appinfo.getType())){ +// map.put("err_no",ErrorCode.APP_ID_NOT_FOUND.getCode()); +// map.put("err_tips",ErrorCode.APP_ID_NOT_FOUND.getMessage()); +// return map; +// } +// WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); +// if(payAccount == null){ +// map.put("err_no",ErrorCode.API_KEY_NOT_FOUND.getCode()); +// map.put("err_tips","未找到支付配置"); +// return map; +// } +// TenantEntity tenantEntity = new TenantEntity(); +// tenantEntity.updateTenantInfo(appinfo); +// //验证用户 +// Long memberId = null; +// TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, tenantEntity.getTenantId()); +// if(cuser != null && cuser.getUserId() != null){ +// memberId = cuser.getUserId(); +// } +// if(memberId == null){ +// map.put("err_no",ErrorCode.USER_NOT_MEMBER.getCode()); +// map.put("err_tips",ErrorCode.USER_NOT_MEMBER.getMessage()); +// return map; +// } +// +// +// TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); +// CreateOrderCallback createOrderCallback = ttPayService.parseOrderNotifyV2Result(body, header); +// JSONObject allExtParam = new JSONObject(); +// allExtParam.put("order_id",createOrderCallback.getOrderId()); +// allExtParam.put("total_amount",createOrderCallback.getTotalAmount()); +// allExtParam.put("discount",createOrderCallback.getDiscount()); +// allExtParam.put("open_id",createOrderCallback.getOpenId()); +// +// List list = new ArrayList<>(); +// for (CreateOrderCallback.Good good:createOrderCallback.getGoods()) { +// PlatPushOrderSaveDto dto = new PlatPushOrderSaveDto(); +// dto.setCouponChannelId(Long.parseLong(couponMap.get(good.getGoodsId()))); +// dto.setCount(good.getQuantity()); +// dto.setExtParam(JSON.toJSONString(good.getItemOrderInfoList())); +// list.add(dto); +// } +// +// ResultData resultData = wxOrderService.platPushSaveOrder(true, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH, allExtParam.toJSONString(), list, memberId, EnumPayWay.PAY_WAY_TT, tenantEntity); +// logger.info("resultData{}"+JSON.toJSONString(resultData)); +// if(resultData.code == 200){ +// WxComposeOrder order = (WxComposeOrder) resultData.data; +// Map data = new HashMap<>(); +// data.put("out_order_no",order.getMainOrderId().toString()); +// data.put("pay_expire_seconds",15*60); +// data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); +//// List> goodsValid = new ArrayList<>(); +//// for (Long couponChannelId:order.getCouponChannelMap().keySet()) { +//// Map goodsValidMap = new HashMap<>(); +//// WxCouponChannel couponChannel = order.getCouponChannelMap().get(couponChannelId); +//// goodsValidMap.put("goods_id",couponChannel.getTtSpuId()); +//// WxCoupon wxCoupon = order.getCouponMap().get(couponChannel.getCouponId()); +//// if(EnumCouponValidType.BETWEEN_TWO_TIME.getCode().equals(wxCoupon.getValidType())){ +//// goodsValidMap.put("valid_start_time",wxCoupon.getValidStartDate().getTime()); +//// goodsValidMap.put("valid_end_time",wxCoupon.getValidEndDate().getTime()); +//// }else{ +//// goodsValidMap.put("valid_duration",(long)wxCoupon.getValidDays()*24*3600*1000); +//// } +//// goodsValid.add(goodsValidMap); +//// } +//// data.put("order_valid_time",goodsValid); +// +// map.put("data",data); +// map.put("err_no",0); +// map.put("err_tips",resultData.message); +// logger.info("resultData{}"+JSON.toJSONString(map)); +// return map; +// }else{ +// map.put("err_no",resultData.code); +// map.put("err_tips",resultData.message); +// return map; +// } +// +// } catch (TtPayException e) { +// logger.error(e.getMessage()); +// map.put("err_no",ErrorCode.SYS_BEAN_EMPTY_PROPERTY_ERROR.getCode()); +// map.put("err_tips",e.getMessage()); +// return map; +// } catch (Exception e){ +// logger.error(e.getMessage()); +// map.put("err_no",ErrorCode.SYS_SERVER_ERROR.getCode()); +// map.put("err_tips",e.getMessage()); +// return map; +// } +// } + @ApiOperation(value = "继续支付", notes = "{\"composeOrderId\":\"string\"}") @PostMapping("/continueToPay") public ResultData continueToPay(@RequestBody Map paramMap) { diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/WxMsgModelSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/WxMsgModelSchedule.java new file mode 100644 index 000000000..08d4977ad --- /dev/null +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/WxMsgModelSchedule.java @@ -0,0 +1,82 @@ +package com.iformall.schedule; + +import com.alibaba.fastjson.JSONObject; +import com.iformall.domain.po.WxMsgConfig; +import com.iformall.domain.po.WxMsgModel; +import com.iformall.enums.EnumMsgModelStatus; +import com.iformall.mapper.WxMsgConfigMapper; +import com.iformall.mapper.WxMsgModelMapper; +import com.iformall.sms.SMSFactory; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +import static java.util.stream.Collectors.groupingBy; + + +@Component +public class WxMsgModelSchedule { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxMsgModelMapper WxMsgModelMapper; + + @Autowired + WxMsgConfigMapper wxMsgConfigMapper; + + @Async + @Scheduled(cron = "0 * 1/* * * ?") // + public void querySmsTemplate() { + WxMsgModel msgModel = new WxMsgModel(); + msgModel.setStatus(EnumMsgModelStatus.AUDITING.getCode()); + List aliYunList = WxMsgModelMapper.findAliYunList(msgModel); + if(!aliYunList.isEmpty()){ + Map> collect = aliYunList.stream().collect(groupingBy(WxMsgModel::getTenantId)); + for (String tenantId:collect.keySet()) { + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setTenantId(tenantId); + List wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); + if (wxMsgConfigs.size() == 0){ + logger.error("您还未接入短信运营商,请联系平台管理员"); + }else{ + wxMsgConfig = wxMsgConfigs.get(0); + List wxMsgModels = collect.get(tenantId); + for (WxMsgModel model:wxMsgModels) { + try{ + String result = SMSFactory.querySmsTemplate(wxMsgConfig, model.getModelCode()); + if(StringUtils.isNotBlank(result)){ + JSONObject jsonObjectResult = JSONObject.parseObject(result); + String templateCode = jsonObjectResult.getString("templateCode"); + Integer templateStatus = jsonObjectResult.getInteger("templateStatus"); + String reason = jsonObjectResult.getString("reason"); + if(templateStatus.intValue() == 1 || templateStatus.intValue() == 2) {//0:审核中。1:审核通过。2:审核失败 + WxMsgModel updModel = new WxMsgModel(); + updModel.setTenantId(tenantId); + updModel.setStatus(templateStatus.intValue() == 1?EnumMsgModelStatus.SUCCESS.getCode():EnumMsgModelStatus.FAIL.getCode()); + updModel.setReason(reason); + updModel.setModelCode(templateCode); + WxMsgModelMapper.updateByCode(updModel); + } + } + }catch (Exception e){ + logger.error("查询模板审核状态失败"+e.getMessage()); + } + } + } + + } + } + + + + + + } +} diff --git a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java index 8b9646515..2a402d40b 100644 --- a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java +++ b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java @@ -54,6 +54,13 @@ public class BaseMyBatisConfiguration { wxCouponrSharding.setRule(EnumShardingRule.HASH.getCode()); shardingList.add(wxCouponrSharding); + ShardingSphere ttPoiTakeRateSharding = new ShardingSphere(); + ttPoiTakeRateSharding.setColumn("tenant_id"); + ttPoiTakeRateSharding.setTableName("tt_poi_take_rate"); + ttPoiTakeRateSharding.setCount(100); + ttPoiTakeRateSharding.setRule(EnumShardingRule.HASH.getCode()); + shardingList.add(ttPoiTakeRateSharding); + ShardingSphere wxCouponrMerchantSharding = new ShardingSphere(); wxCouponrMerchantSharding.setColumn("tenant_id"); wxCouponrMerchantSharding.setTableName("wx_coupon_merchant"); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/TtPoiTakeRate.java b/mallinkService/src/main/java/com/iformall/domain/po/TtPoiTakeRate.java new file mode 100644 index 000000000..5804873b1 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/TtPoiTakeRate.java @@ -0,0 +1,36 @@ +package com.iformall.domain.po; + +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_poi_take_rate") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtPoiTakeRate extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="商品ID",name="couponId") + private Long couponId; + + @io.swagger.annotations.ApiModelProperty(value="抖音ID",name="douyinId") + private String douyinId; + + @io.swagger.annotations.ApiModelProperty(value="分佣率",name="takeRate") + private Integer takeRate; + + @io.swagger.annotations.ApiModelProperty(value="状态",name="status") + private Integer status; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgModel.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgModel.java index 8d33d9003..d3139d6af 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgModel.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgModel.java @@ -28,8 +28,14 @@ public class WxMsgModel extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="审核状态 0未通过 1 通过 2审核中",name="status") private Integer status; + @io.swagger.annotations.ApiModelProperty(value="reason",name="reason") + private String reason; + @io.swagger.annotations.ApiModelProperty(value="modelid",name="modelId") private Integer modelId; + + @io.swagger.annotations.ApiModelProperty(value="templateType",name="templateType") + private Integer templateType; @io.swagger.annotations.ApiModelProperty(value="aliyun模板code",name="modelCode") private String modelCode; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index 10bbcc903..48324434f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -57,6 +57,8 @@ public class WxPayOrder extends TenantEntity { private String payOrderNo; @io.swagger.annotations.ApiModelProperty(value="支付状态: 0-支付中;1-支付成功;2-支付失败",name="payOrderStatus") private Integer payOrderStatus; + @TableField(exist = false) + private boolean creatPay; @io.swagger.annotations.ApiModelProperty(value="支付额外参数",name="payParam") private String payParam; @io.swagger.annotations.ApiModelProperty(value="分账状态: 0-未分账;1-分账",name="payOrderStatus") diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelStatus.java index bd6b99352..8ffd1b646 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelStatus.java @@ -4,8 +4,9 @@ package com.iformall.enums; * Created by Stormeye on 2018/08/09. */ public enum EnumMsgModelStatus { - SUCCESS(1, "创建模板成功"), - FAIL(0, "创建模板失败"), + SUCCESS(1, "已通过"), + FAIL(0, "失败"), + AUDITING(2, "审核中"), REPEAT(-6, "模板已存在"), NOT_FOUND(-5, "短信模板不存在"), SINATURE_CONTENT_ERROR(-4, "短信签名或内容错误"), diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelType.java new file mode 100644 index 000000000..67a124cc5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelType.java @@ -0,0 +1,40 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumMsgModelType { + + //说明推广短信和国际/港澳台消息仅支持企业用户。 + + YZM(0, "验证码"), + TZ(1, "短信通知"), + TG(2, "推广短信"), + GJ(3, "国际/港澳台消息"), + ; + + public static EnumMsgModelType getEnum(Integer code) { + for (EnumMsgModelType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumMsgModelType(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/mapper/TtPoiTakeRateMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtPoiTakeRateMapper.java new file mode 100644 index 000000000..c524834cb --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/TtPoiTakeRateMapper.java @@ -0,0 +1,16 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.OrderCps; +import com.iformall.domain.po.TtPoiTakeRate; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface TtPoiTakeRateMapper extends CommonMapper { + + TtPoiTakeRate selectByCouponAndDouyin(@Param("tenantId")String tenantId,@Param("couponId")Long couponId,@Param("douyinId")String douyinId); + + List findList(TtPoiTakeRate takeRate); + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMsgModelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMsgModelMapper.java index 16a5f1f1c..2e10af59a 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMsgModelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMsgModelMapper.java @@ -8,9 +8,13 @@ public interface WxMsgModelMapper extends CommonMapper { List findList(WxMsgModel wxMsgModel); + List findAliYunList(WxMsgModel msgModel); + WxMsgModel findOneByModelId(WxMsgModel wxMsgModel); - void updateByCode(WxMsgModel wxMsgModel); + int updateByCode(WxMsgModel wxMsgModel); + + } diff --git a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java index ff85bfaeb..845ac28e1 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java @@ -1,7 +1,9 @@ package com.iformall.service; +import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.TtCouponChannelPoi; +import com.iformall.domain.po.TtPoiTakeRate; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.TtCouponChannelVo; @@ -36,4 +38,6 @@ public interface TtCouponGoodsService { ResultData poiPlanUpdateStatus(TenantEntity tenantInfo, Long planId, Integer status); ResultData poiTakeRate(TenantEntity tenantInfo, Long couponId, String douyinId, Integer takeRate, Integer status); + + PageInfo takeRateListAsPage(TtPoiTakeRate record, Integer pageNum, Integer pageSize); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 9bb973eb6..b28a88250 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -19,6 +19,7 @@ import com.iformall.domain.vo.WxCouponSendVo; import com.iformall.domain.vo.WxOrderCouponPressVo; import com.iformall.domain.vo.WxOrderCouponVo; import com.iformall.domain.vo.WxOrderQueryVo; +import com.iformall.douyin.payv2.result.CreateOrderCallback; import com.iformall.enums.EnumComposeOrder; import com.iformall.enums.EnumOrderStatus; import com.iformall.enums.EnumPayWay; @@ -267,4 +268,6 @@ public interface WxOrderService { Map getOrderEntrySchema(Long mainOrderId); int updateCpsStatus(WxOrder order); + + ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, List goods); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index 4031e7032..d18d81b74 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -38,7 +38,7 @@ public interface WxPayOrderService { */ ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); - PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, + PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder,List childOrders, String productName, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); /** diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java index 12d5436fe..2bc194fd9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -63,6 +63,9 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { @Autowired WxAppinfoService wxAppinfoService; + @Autowired + TtPoiTakeRateMapper ttPoiTakeRateMapper; + @Override public ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttCouponList(ttCouponVo)); @@ -538,6 +541,13 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { String spu_id = ttMerchantPoiService.getTtWebService(tenantInfo).getPoiPlanService().poiTakeRate(poiTakeRate); if(StringUtils.isNotBlank(spu_id) && spu_id.equals(ttCouponChannelPoi.getSpuId())){ + TtPoiTakeRate ttPoiTakeRate = new TtPoiTakeRate(); + ttPoiTakeRate.updateTenantInfo(tenantInfo); + ttPoiTakeRate.setCouponId(couponId); + ttPoiTakeRate.setDouyinId(douyinId); + ttPoiTakeRate.setTakeRate(takeRate); + ttPoiTakeRate.setStatus(status); + this.saveorupdate(ttPoiTakeRate); return new ResultData(); }else{ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"设置达人分佣错误"); @@ -548,5 +558,29 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { } } + @Override + public PageInfo takeRateListAsPage(TtPoiTakeRate record, Integer pageNum, Integer pageSize) { + return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> ttPoiTakeRateMapper.findList(record)); + } + + + private int saveorupdate(TtPoiTakeRate takeRate){ + TtPoiTakeRate ttPoiTakeRate = ttPoiTakeRateMapper.selectByCouponAndDouyin(takeRate.getTenantId(), takeRate.getCouponId(), takeRate.getDouyinId()); + Date now = new Date(); + if(ttPoiTakeRate == null){ + final IdWorker idWorker = IdWorker.get(); + takeRate.setId(idWorker.nextId()); + takeRate.setCreateDate(now); + takeRate.setUpdateDate(now); + return ttPoiTakeRateMapper.insert(takeRate); + }else{ + ttPoiTakeRate.setTakeRate(takeRate.getTakeRate()); + ttPoiTakeRate.setStatus(takeRate.getStatus()); + ttPoiTakeRate.setUpdateDate(new Date()); + return ttPoiTakeRateMapper.updateById(ttPoiTakeRate); + } + + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java index dd27c9755..7c3e081bc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java @@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.po.*; import com.iformall.enums.EnumCouponPasswordStatus; +import com.iformall.enums.EnumMsgModelStatus; import com.iformall.enums.EnumMsgSendStatus; import com.iformall.mapper.*; import com.iformall.service.WxMsgCallbackService; @@ -174,15 +175,19 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { //approved:审核通过 //rejected:审核未通过 String templateStatus = param.get("template_status"); + + String reason = param.get("reason"); if("approving".equalsIgnoreCase(templateStatus)){ - wxMsgModel.setStatus(2); + return; +// wxMsgModel.setStatus(2); }else if("approved".equalsIgnoreCase(templateStatus)){ - wxMsgModel.setStatus(1); + wxMsgModel.setStatus(EnumMsgModelStatus.SUCCESS.getCode()); }else if("rejected".equalsIgnoreCase(templateStatus)){ - wxMsgModel.setStatus(0); + wxMsgModel.setStatus(EnumMsgModelStatus.FAIL.getCode()); }else{ wxMsgModel.setStatus(-1); } + wxMsgModel.setReason(reason); wxMsgModelMapper.updateByCode(wxMsgModel); WxMsgValidationcodeModel wxMsgValidationcodeModel = new WxMsgValidationcodeModel(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java index 3f465acbe..d356ac173 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java @@ -74,7 +74,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { } String result = SMSFactory.addTemplate(wxMsgConfig, signature,content, EnumVerifyCode.NO.getCode().toString(), - wxMsgModel.getName(),1,wxMsgModel.getName()); + wxMsgModel.getName(),wxMsgModel.getTemplateType(),wxMsgModel.getName()); JSONObject jsonObjectResult = JSONObject.parseObject(result); String ret = jsonObjectResult.get("ret").toString(); logger.info("短信模板创建结果:" + result); @@ -90,7 +90,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); } wxMsgModel.setCreatetime(new Date()); - wxMsgModel.setStatus(2);//审核中 + wxMsgModel.setStatus(EnumMsgModelStatus.AUDITING.getCode());//审核中 wxMsgModelMapper.insert(wxMsgModel); } else { if(jsonObjectResult.get("data") != null){ @@ -100,7 +100,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { if(jsonObjectResult.get("aliyunModelCode") != null){ wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); } - wxMsgModel.setStatus(2);//审核中 + wxMsgModel.setStatus(EnumMsgModelStatus.AUDITING.getCode());//审核中 wxMsgModelMapper.updateById(wxMsgModel); } return new ResultData(Result.SUCCESS, "创建模板成功"); @@ -109,7 +109,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { final IdWorker idWorker = IdWorker.get(); wxMsgModel.setId(idWorker.nextId()); wxMsgModel.setCreatetime(new Date()); - wxMsgModel.setStatus(1); + wxMsgModel.setStatus(EnumMsgModelStatus.SUCCESS.getCode()); wxMsgModelMapper.insert(wxMsgModel); } else { wxMsgModelMapper.updateById(wxMsgModel); @@ -138,7 +138,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { public ResultData getModelList(TenantEntity tenantEntity) { WxMsgModel wxMsgModel = new WxMsgModel(); wxMsgModel.updateTenantInfo(tenantEntity); - wxMsgModel.setStatus(1); + wxMsgModel.setStatus(EnumMsgModelStatus.SUCCESS.getCode()); List list = wxMsgModelMapper.findList(wxMsgModel); return new ResultData(list); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 2eb6b5a31..fda237e4b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; @@ -23,6 +24,7 @@ import com.iformall.domain.po.*; import com.iformall.domain.po.msg.*; import com.iformall.domain.po.tt.TtCUser; import com.iformall.domain.vo.*; +import com.iformall.douyin.payv2.result.CreateOrderCallback; import com.iformall.enums.*; import com.iformall.mapper.*; import com.iformall.service.*; @@ -66,6 +68,8 @@ import com.iformall.domain.po.base.TenantEntity; import com.iformall.exception.MallinkException; import com.iformall.mq.MqBaseProducer; +import static java.util.stream.Collectors.groupingBy; + @Service public class WxOrderServiceImpl implements WxOrderService { @@ -197,6 +201,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired WxBatchOrderMapper wxBatchOrderMapper; + @Autowired + TtCouponChannelPoiMapper ttCouponChannelPoiMapper; + @Autowired @Qualifier("couponDetailRedisTemplate") RedisTemplate cdRedisTemplate; @@ -2831,6 +2838,7 @@ public class WxOrderServiceImpl implements WxOrderService { if (EnumComposeOrder.isSingle(composeOrderType.getCode())) { composeOrder.setSingleOrder(lastOrder); } + List orderList = orderAdapterService.getChildOrders(composeOrder, tenantEntity.getTenantId()); WxPayOrder record = new WxPayOrder(); record.updateTenantInfo(tenantEntity); record.setOrderId(composeOrder.getMainOrderId()); @@ -2838,7 +2846,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setOpenId((String) composeOrder.getMainOrder().getExpParamValue("open_id")); String productName = orderAdapterService.getPayProductName(lastCoupon); WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, payWay.getPlat()); - PayAdapterResult payResult = wxPayOrderService.createPayOrder(cAppInfo, user, record,composeOrder,productName, payWay, new PayExtraParam("openId",record.getOpenId()),false); + PayAdapterResult payResult = wxPayOrderService.createPayOrder(cAppInfo, user, record,composeOrder,orderList,productName, payWay, new PayExtraParam("openId",record.getOpenId()),false); if(payResult.isSuccess()){ return composeOrder; }else{ @@ -3614,6 +3622,53 @@ public class WxOrderServiceImpl implements WxOrderService { return wxOrderMapper.updateById(refOrder); } + @Override + public ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, List goods) { + WxBatchOrder wxBatchOrder = this.getWxBatchOrder(tenantEntity, composeOrderId); + if(wxBatchOrder == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到订单"); + } + WxBatchOrder updBatchOrder = new WxBatchOrder(); + updBatchOrder.updateTenantInfo(tenantEntity); + updBatchOrder.setId(wxBatchOrder.getId()); + updBatchOrder.setExtParam(batchExtParam); + updBatchOrder.setUpdateDate(new Date()); + wxBatchOrderMapper.updateById(updBatchOrder); + + OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(wxBatchOrder.getOrderType()); + WxComposeOrder composeOrder = orderAdapterService.getComposeOrder(wxBatchOrder.getId(), tenantEntity.getTenantId()); + List childOrders = orderAdapterService.getChildOrders(composeOrder, tenantEntity.getTenantId()); + Map> collect = childOrders.stream().collect(groupingBy(WxOrder::getCouponChannelId)); + Map maps = goods.stream().collect(Collectors.toMap(CreateOrderCallback.Good::getGoodsId, Function.identity())); + if(collect.keySet().size() == goods.size()){ + for (Long key: collect.keySet()) { + List wxOrders = collect.get(key); + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectByChannelId(tenantEntity.getTenantId(),key); + CreateOrderCallback.Good good = maps.get(ttCouponChannelPoi.getSpuId()); + if(wxOrders.size() == good.getItemOrderInfoList().size()){ + for(int i=0;i> getBatchOrderMap(TenantEntity tenantEntity,List batchOrderIds){ WxOrder recordQ = new WxOrder(); recordQ.updateTenantInfo(tenantEntity); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 9c8e4561f..8a60a336e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -12,6 +12,7 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.douyin.payv2.request.TtPayUnifiedOrderV2Request; import com.iformall.douyin.payv2.result.TtPayOrderQueryV2Result; import com.iformall.enums.*; import com.iformall.exception.MallinkException; @@ -49,6 +50,8 @@ import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; import java.util.*; +import static java.util.stream.Collectors.groupingBy; + @Service public class WxPayOrderServiceImpl implements WxPayOrderService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -77,6 +80,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Autowired WxCouponMapper wxCouponMapper; + @Autowired + WxCouponChannelMapper wxCouponChannelMapper; + + @Autowired + TtCouponChannelPoiMapper ttCouponChannelPoiMapper; + @Autowired WxPayOrderMapper wxPayOrderMapper; @@ -224,7 +233,20 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } return oldRecord; - } + }else if(EnumPayStatus.PAY_STATUS_ORDER_NOT_EXISTS.getCode()==wxpaystatus){ + oldRecord.setCreatPay(true); + if (repeatPay) { + if (oldRecord.getPayOrderStatus()!=EnumPayStatus.PAY_STATUS_WAIT.getCode()) { + oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); + int sqlRow0 =wxPayOrderMapper.updateById(oldRecord); + if (sqlRow0 != 1) { + logger.error("pay order update error: " + oldRecord.toString()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + } + } + return oldRecord; + } return null; } @@ -248,7 +270,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { lastCoupon = checkSinglePayOrder(o, user, payWay); } String productName = orderAdapterService.getPayProductName(lastCoupon); - PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,productName, payWay, params,isCreatePay); + PayAdapterResult payResult = createPayOrder(appInfo, user, record,composeOrder,orderList,productName, payWay, params,isCreatePay); if (payResult.isSuccess()) { // wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); @@ -323,8 +345,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return wxCoupon; } @Override - public PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder, - String productName, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay) { + public PayAdapterResult createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user,WxPayOrder record,WxComposeOrder composeOrder,List childOrders, + String productName,EnumPayWay payWay,PayExtraParam params,boolean isCreatePay) { IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO; @@ -435,8 +457,31 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if(!isCreatePay){ PayAdapterResult par = new PayAdapterResult(); par.setSuccess(true); - Map map = new HashMap<>(); - map.put("outOrderNo",record.getOrderId().toString()); + Map map = new HashMap<>(); + map.put("outOrderNo",record.getOrderId()); + map.put("createPay",record.isCreatPay()); + if(record.isCreatPay()){ + Map payment = new HashMap(); + payment.put("totalAmount",composeOrder.getPayment()); + map.put("payment",payment); + List> goodsList = new ArrayList<>(); + Map> collect = childOrders.stream().collect(groupingBy(WxOrder::getCouponChannelId)); + for (Long key: collect.keySet()) { + Map good = new HashMap<>(); + Long couponId = wxCouponChannelMapper.findCouponIdById(key, record.getTenantId()); + WxCoupon wxCoupon = wxCouponMapper.selectById(couponId, record.getTenantId()); + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(appInfo.getTenantId(), couponId); + int quantity = collect.get(key).size(); + good.put("quantity",quantity); + good.put("price",wxCoupon.getSalePrice()*quantity); + good.put("goodsName",wxCoupon.getTitle()); + good.put("goodsPhoto",wxCoupon.getCoverImg()); + good.put("goodsId",ttCouponChannelPoi.getSpuId()); + good.put("goodsType",1); + goodsList.add(good); + } + map.put("goodsList",goodsList); + } par.setData(map); return par; } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java index 3871e570c..6d6ecaceb 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java @@ -67,7 +67,11 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen @Override public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,String productName,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { - if(StringUtils.isNotBlank(record.getPayParam())){ + + if(!record.isCreatPay()){ + if(StringUtils.isBlank(record.getPayParam())){ + throw new MallinkException(ErrorCode.SYS_AUTH_ERROR.getCode(),"请升级抖音版本"); + } record.setUpdateTime(new Date()); PayAdapterResult par = new PayAdapterResult(); par.setSuccess(true); diff --git a/mallinkService/src/main/java/com/iformall/sms/SMSExcutor.java b/mallinkService/src/main/java/com/iformall/sms/SMSExcutor.java index 2b49e65dd..5174cc208 100644 --- a/mallinkService/src/main/java/com/iformall/sms/SMSExcutor.java +++ b/mallinkService/src/main/java/com/iformall/sms/SMSExcutor.java @@ -11,5 +11,5 @@ public interface SMSExcutor { String remark); - + String querySmsTemplate(String templateCode); } diff --git a/mallinkService/src/main/java/com/iformall/sms/SMSFactory.java b/mallinkService/src/main/java/com/iformall/sms/SMSFactory.java index 2b2840a31..81c891d59 100644 --- a/mallinkService/src/main/java/com/iformall/sms/SMSFactory.java +++ b/mallinkService/src/main/java/com/iformall/sms/SMSFactory.java @@ -64,4 +64,8 @@ public class SMSFactory { verifysms,templateName,templateType,remark); } + public static String querySmsTemplate(WxMsgConfig wxMsgConfig, String templateCode) { + return getSendExcutor(wxMsgConfig).querySmsTemplate(templateCode); + } + } diff --git a/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java b/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java index 6663adc67..bedc1d369 100644 --- a/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java +++ b/mallinkService/src/main/java/com/iformall/sms/aliyun/AliyunSMS.java @@ -1,6 +1,7 @@ package com.iformall.sms.aliyun; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.*; @@ -63,6 +64,21 @@ public class AliyunSMS implements SMSExcutor { return JSON.toJSONString(SMSResult); } + @Override + public String querySmsTemplate(String templateCode) { + SMSTemplate smsTemplate = new SMSTemplate(); + smsTemplate.setTemplateCode(templateCode); + QuerySmsTemplateResponse querySmsTemplateResponse = this.querySmsTemplate(smsTemplate); + if(querySmsTemplateResponse.getCode() != null && querySmsTemplateResponse.getCode().equalsIgnoreCase("ok")){ + JSONObject obj = new JSONObject(); + obj.put("templateCode",querySmsTemplateResponse.getTemplateCode()); + obj.put("templateStatus",querySmsTemplateResponse.getTemplateStatus());//0:审核中。1:审核通过。2:审核失败 + obj.put("reason",querySmsTemplateResponse.getReason()); + return obj.toJSONString(); + } + return null; + } + /** * 发送短信 * @param sms @@ -317,7 +333,7 @@ public class AliyunSMS implements SMSExcutor { e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); } QuerySmsTemplateRequest request = new QuerySmsTemplateRequest(); - request.setTemplateCode("SMS_244430122"); + request.setTemplateCode("SMS_244585929"); DefaultAcsClient acsClient = new DefaultAcsClient(profile); QuerySmsTemplateResponse response = null; diff --git a/mallinkService/src/main/java/com/iformall/sms/wiwide/WiwideUtil.java b/mallinkService/src/main/java/com/iformall/sms/wiwide/WiwideUtil.java index 4284f50b7..a34d3bd91 100644 --- a/mallinkService/src/main/java/com/iformall/sms/wiwide/WiwideUtil.java +++ b/mallinkService/src/main/java/com/iformall/sms/wiwide/WiwideUtil.java @@ -36,6 +36,11 @@ public class WiwideUtil implements SMSExcutor { return addTemplate(secret, bid, publickey, signature, content, notifyUrl,verifysms); } + @Override + public String querySmsTemplate(String templateCode) { + return null; + } + public static String addTemplate(String secret, String bid, String publickey, String signature, String content, String notifyUrl, String verifysms) { //请求api数据排序 TreeMap message = new TreeMap<>(); diff --git a/mallinkService/src/main/resources/mapper/TtPoiTakeRateMapper.xml b/mallinkService/src/main/resources/mapper/TtPoiTakeRateMapper.xml new file mode 100644 index 000000000..662bb11f7 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/TtPoiTakeRateMapper.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`douyin_id`, + `take_rate`,`status`, + `create_date`,`update_date` + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `coupon_id` = #{couponId} + + + + and `douyin_id` = #{douyinId} + + + + and `status` = #{status} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml index 399ed931b..36f7c5993 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml @@ -10,13 +10,15 @@ + + - `id`,`tenant_id`,`parent_tenant_id`,`name`,`signature`,`content`,`createtime`,`status`,`model_id`,`model_code` + `id`,`tenant_id`,`parent_tenant_id`,`name`,`signature`,`content`,`createtime`,`status`,`reason`,`model_id`,`template_type`,`model_code` @@ -55,6 +57,9 @@ and `model_id` = #{modelId} + + and `template_type` = #{templateType} + and `model_code` = #{modelCode} @@ -74,6 +79,15 @@ + + + - update wx_msg_model set status=#{status} where `model_code` = #{modelCode} + update wx_msg_model set status=#{status},reason=#{reason} where `model_code` = #{modelCode}