| @@ -1,19 +1,15 @@ | |||||
| package com.iformall.controller.basic; | package com.iformall.controller.basic; | ||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | import com.iformall.annotation.SystemControllerLog; | ||||
| import com.iformall.annotation.TenantIgnore; | |||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.controller.base.BaseController; | 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.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.ApiImplicitParams; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| @@ -110,6 +106,21 @@ public class TtPoiPlanController extends BaseController { | |||||
| return ttCouponGoodsService.poiPlanUpdateStatus(getTenantInfo(),planId,status); | 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<TtPoiTakeRate> page = ttCouponGoodsService.takeRateListAsPage(record, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("商品达人分佣配置") | @ApiOperation("商品达人分佣配置") | ||||
| @PostMapping("takeRate") | @PostMapping("takeRate") | ||||
| @SystemControllerLog(description = "更新") | @SystemControllerLog(description = "更新") | ||||
| @@ -7,6 +7,7 @@ import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
| import com.iformall.domain.po.base.BaseEntity; | import com.iformall.domain.po.base.BaseEntity; | ||||
| import com.iformall.domain.po.WxMsgModel; | import com.iformall.domain.po.WxMsgModel; | ||||
| import com.iformall.enums.EnumMsgModelType; | |||||
| import com.iformall.service.WxMsgModelService; | import com.iformall.service.WxMsgModelService; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| import io.swagger.annotations.ApiImplicitParams; | import io.swagger.annotations.ApiImplicitParams; | ||||
| @@ -47,6 +48,9 @@ public class WxMsgModelController extends BaseController { | |||||
| //Assert.notNull(wxMsgModel.getName(), "角色名不能为空"); | //Assert.notNull(wxMsgModel.getName(), "角色名不能为空"); | ||||
| //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); | //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); | ||||
| wxMsgModel.updateTenantInfo(getTenantInfo()); | wxMsgModel.updateTenantInfo(getTenantInfo()); | ||||
| if(wxMsgModel.getTemplateType() == null){ | |||||
| wxMsgModel.setTemplateType(EnumMsgModelType.TZ.getCode()); | |||||
| } | |||||
| return wxMsgModelService.saveOrUpdate(wxMsgModel); | return wxMsgModelService.saveOrUpdate(wxMsgModel); | ||||
| } | } | ||||
| @@ -171,10 +171,10 @@ public class WxOrderController extends BaseController { | |||||
| header.setNonce(request.getHeader("Byte-Nonce-Str")); | header.setNonce(request.getHeader("Byte-Nonce-Str")); | ||||
| header.setSigned(request.getHeader("Byte-Signature")); | 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(); | String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); | ||||
| logger.info("支付2.0预下单回调---body{}"+body); | |||||
| // logger.info("支付2.0预下单回调---body{}"+body); | |||||
| try { | try { | ||||
| JSONObject jsonObject = JSONObject.parseObject(body); | JSONObject jsonObject = JSONObject.parseObject(body); | ||||
| String msg = jsonObject.getString("msg"); | String msg = jsonObject.getString("msg"); | ||||
| @@ -183,7 +183,7 @@ public class WxOrderController extends BaseController { | |||||
| String app_id = msgObject.getString("app_id"); | String app_id = msgObject.getString("app_id"); | ||||
| String open_id = msgObject.getString("open_id"); | String open_id = msgObject.getString("open_id"); | ||||
| //透传字段 | //透传字段 | ||||
| Map<String,String> couponMap = new HashMap<>(); | |||||
| Long composeOrderId = null; | |||||
| try{ | try{ | ||||
| String cp_extra = msgObject.getString("cp_extra"); | String cp_extra = msgObject.getString("cp_extra"); | ||||
| if(StringUtils.isBlank(cp_extra)){ | if(StringUtils.isBlank(cp_extra)){ | ||||
| @@ -191,10 +191,12 @@ public class WxOrderController extends BaseController { | |||||
| map.put("err_tips","缺少透传字段"); | map.put("err_tips","缺少透传字段"); | ||||
| return map; | return map; | ||||
| } | } | ||||
| couponMap = JSONObject.parseObject(cp_extra, Map.class); | |||||
| Map<String,String> couponMap = JSONObject.parseObject(cp_extra, Map.class); | |||||
| String idstr = couponMap.get("composeOrderId"); | |||||
| composeOrderId = Long.parseLong(idstr); | |||||
| }catch(Exception e){ | }catch(Exception e){ | ||||
| } | } | ||||
| if(couponMap.isEmpty()){ | |||||
| if(composeOrderId == null){ | |||||
| map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); | map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); | ||||
| map.put("err_tips","透传字段格式不正确"); | map.put("err_tips","透传字段格式不正确"); | ||||
| return map; | return map; | ||||
| @@ -231,23 +233,15 @@ public class WxOrderController extends BaseController { | |||||
| TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); | TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); | ||||
| CreateOrderCallback createOrderCallback = ttPayService.parseOrderNotifyV2Result(body, header); | CreateOrderCallback createOrderCallback = ttPayService.parseOrderNotifyV2Result(body, header); | ||||
| JSONObject allExtParam = new JSONObject(); | JSONObject allExtParam = new JSONObject(); | ||||
| allExtParam.put("order_id",createOrderCallback.getOrderId()); | allExtParam.put("order_id",createOrderCallback.getOrderId()); | ||||
| allExtParam.put("total_amount",createOrderCallback.getTotalAmount()); | allExtParam.put("total_amount",createOrderCallback.getTotalAmount()); | ||||
| allExtParam.put("discount",createOrderCallback.getDiscount()); | allExtParam.put("discount",createOrderCallback.getDiscount()); | ||||
| allExtParam.put("open_id",createOrderCallback.getOpenId()); | allExtParam.put("open_id",createOrderCallback.getOpenId()); | ||||
| List<PlatPushOrderSaveDto> 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){ | if(resultData.code == 200){ | ||||
| WxComposeOrder order = (WxComposeOrder) resultData.data; | WxComposeOrder order = (WxComposeOrder) resultData.data; | ||||
| Map<String, Object> data = new HashMap<>(); | Map<String, Object> 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<String,Object> douyinPushOrder(HttpServletRequest request) { | |||||
| // | |||||
| // Map<String, Object> 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<String,String> 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<PlatPushOrderSaveDto> 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<String, Object> 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<Map<String,Object>> goodsValid = new ArrayList<>(); | |||||
| //// for (Long couponChannelId:order.getCouponChannelMap().keySet()) { | |||||
| //// Map<String,Object> 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\"}") | @ApiOperation(value = "继续支付", notes = "{\"composeOrderId\":\"string\"}") | ||||
| @PostMapping("/continueToPay") | @PostMapping("/continueToPay") | ||||
| public ResultData continueToPay(@RequestBody Map<String, Object> paramMap) { | public ResultData continueToPay(@RequestBody Map<String, Object> paramMap) { | ||||
| @@ -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<WxMsgModel> aliYunList = WxMsgModelMapper.findAliYunList(msgModel); | |||||
| if(!aliYunList.isEmpty()){ | |||||
| Map<String, List<WxMsgModel>> collect = aliYunList.stream().collect(groupingBy(WxMsgModel::getTenantId)); | |||||
| for (String tenantId:collect.keySet()) { | |||||
| WxMsgConfig wxMsgConfig = new WxMsgConfig(); | |||||
| wxMsgConfig.setTenantId(tenantId); | |||||
| List<WxMsgConfig> wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); | |||||
| if (wxMsgConfigs.size() == 0){ | |||||
| logger.error("您还未接入短信运营商,请联系平台管理员"); | |||||
| }else{ | |||||
| wxMsgConfig = wxMsgConfigs.get(0); | |||||
| List<WxMsgModel> 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()); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -54,6 +54,13 @@ public class BaseMyBatisConfiguration { | |||||
| wxCouponrSharding.setRule(EnumShardingRule.HASH.getCode()); | wxCouponrSharding.setRule(EnumShardingRule.HASH.getCode()); | ||||
| shardingList.add(wxCouponrSharding); | 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(); | ShardingSphere wxCouponrMerchantSharding = new ShardingSphere(); | ||||
| wxCouponrMerchantSharding.setColumn("tenant_id"); | wxCouponrMerchantSharding.setColumn("tenant_id"); | ||||
| wxCouponrMerchantSharding.setTableName("wx_coupon_merchant"); | wxCouponrMerchantSharding.setTableName("wx_coupon_merchant"); | ||||
| @@ -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; | |||||
| } | |||||
| @@ -28,8 +28,14 @@ public class WxMsgModel extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value="审核状态 0未通过 1 通过 2审核中",name="status") | @io.swagger.annotations.ApiModelProperty(value="审核状态 0未通过 1 通过 2审核中",name="status") | ||||
| private Integer status; | private Integer status; | ||||
| @io.swagger.annotations.ApiModelProperty(value="reason",name="reason") | |||||
| private String reason; | |||||
| @io.swagger.annotations.ApiModelProperty(value="modelid",name="modelId") | @io.swagger.annotations.ApiModelProperty(value="modelid",name="modelId") | ||||
| private Integer modelId; | private Integer modelId; | ||||
| @io.swagger.annotations.ApiModelProperty(value="templateType",name="templateType") | |||||
| private Integer templateType; | |||||
| @io.swagger.annotations.ApiModelProperty(value="aliyun模板code",name="modelCode") | @io.swagger.annotations.ApiModelProperty(value="aliyun模板code",name="modelCode") | ||||
| private String modelCode; | private String modelCode; | ||||
| @@ -57,6 +57,8 @@ public class WxPayOrder extends TenantEntity { | |||||
| private String payOrderNo; | private String payOrderNo; | ||||
| @io.swagger.annotations.ApiModelProperty(value="支付状态: 0-支付中;1-支付成功;2-支付失败",name="payOrderStatus") | @io.swagger.annotations.ApiModelProperty(value="支付状态: 0-支付中;1-支付成功;2-支付失败",name="payOrderStatus") | ||||
| private Integer payOrderStatus; | private Integer payOrderStatus; | ||||
| @TableField(exist = false) | |||||
| private boolean creatPay; | |||||
| @io.swagger.annotations.ApiModelProperty(value="支付额外参数",name="payParam") | @io.swagger.annotations.ApiModelProperty(value="支付额外参数",name="payParam") | ||||
| private String payParam; | private String payParam; | ||||
| @io.swagger.annotations.ApiModelProperty(value="分账状态: 0-未分账;1-分账",name="payOrderStatus") | @io.swagger.annotations.ApiModelProperty(value="分账状态: 0-未分账;1-分账",name="payOrderStatus") | ||||
| @@ -4,8 +4,9 @@ package com.iformall.enums; | |||||
| * Created by Stormeye on 2018/08/09. | * Created by Stormeye on 2018/08/09. | ||||
| */ | */ | ||||
| public enum EnumMsgModelStatus { | public enum EnumMsgModelStatus { | ||||
| SUCCESS(1, "创建模板成功"), | |||||
| FAIL(0, "创建模板失败"), | |||||
| SUCCESS(1, "已通过"), | |||||
| FAIL(0, "失败"), | |||||
| AUDITING(2, "审核中"), | |||||
| REPEAT(-6, "模板已存在"), | REPEAT(-6, "模板已存在"), | ||||
| NOT_FOUND(-5, "短信模板不存在"), | NOT_FOUND(-5, "短信模板不存在"), | ||||
| SINATURE_CONTENT_ERROR(-4, "短信签名或内容错误"), | SINATURE_CONTENT_ERROR(-4, "短信签名或内容错误"), | ||||
| @@ -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; | |||||
| } | |||||
| } | |||||
| @@ -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, Long> { | |||||
| TtPoiTakeRate selectByCouponAndDouyin(@Param("tenantId")String tenantId,@Param("couponId")Long couponId,@Param("douyinId")String douyinId); | |||||
| List<TtPoiTakeRate> findList(TtPoiTakeRate takeRate); | |||||
| } | |||||
| @@ -8,9 +8,13 @@ public interface WxMsgModelMapper extends CommonMapper<WxMsgModel, String> { | |||||
| List<WxMsgModel> findList(WxMsgModel wxMsgModel); | List<WxMsgModel> findList(WxMsgModel wxMsgModel); | ||||
| List<WxMsgModel> findAliYunList(WxMsgModel msgModel); | |||||
| WxMsgModel findOneByModelId(WxMsgModel wxMsgModel); | WxMsgModel findOneByModelId(WxMsgModel wxMsgModel); | ||||
| void updateByCode(WxMsgModel wxMsgModel); | |||||
| int updateByCode(WxMsgModel wxMsgModel); | |||||
| } | } | ||||
| @@ -1,7 +1,9 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.TtCouponChannelPoi; | import com.iformall.domain.po.TtCouponChannelPoi; | ||||
| import com.iformall.domain.po.TtPoiTakeRate; | |||||
| import com.iformall.domain.po.WxCoupon; | import com.iformall.domain.po.WxCoupon; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.TtCouponChannelVo; | import com.iformall.domain.vo.TtCouponChannelVo; | ||||
| @@ -36,4 +38,6 @@ public interface TtCouponGoodsService { | |||||
| ResultData poiPlanUpdateStatus(TenantEntity tenantInfo, Long planId, Integer status); | ResultData poiPlanUpdateStatus(TenantEntity tenantInfo, Long planId, Integer status); | ||||
| ResultData poiTakeRate(TenantEntity tenantInfo, Long couponId, String douyinId, Integer takeRate, Integer status); | ResultData poiTakeRate(TenantEntity tenantInfo, Long couponId, String douyinId, Integer takeRate, Integer status); | ||||
| PageInfo<TtPoiTakeRate> takeRateListAsPage(TtPoiTakeRate record, Integer pageNum, Integer pageSize); | |||||
| } | } | ||||
| @@ -19,6 +19,7 @@ import com.iformall.domain.vo.WxCouponSendVo; | |||||
| import com.iformall.domain.vo.WxOrderCouponPressVo; | import com.iformall.domain.vo.WxOrderCouponPressVo; | ||||
| import com.iformall.domain.vo.WxOrderCouponVo; | import com.iformall.domain.vo.WxOrderCouponVo; | ||||
| import com.iformall.domain.vo.WxOrderQueryVo; | import com.iformall.domain.vo.WxOrderQueryVo; | ||||
| import com.iformall.douyin.payv2.result.CreateOrderCallback; | |||||
| import com.iformall.enums.EnumComposeOrder; | import com.iformall.enums.EnumComposeOrder; | ||||
| import com.iformall.enums.EnumOrderStatus; | import com.iformall.enums.EnumOrderStatus; | ||||
| import com.iformall.enums.EnumPayWay; | import com.iformall.enums.EnumPayWay; | ||||
| @@ -267,4 +268,6 @@ public interface WxOrderService { | |||||
| Map<String,String> getOrderEntrySchema(Long mainOrderId); | Map<String,String> getOrderEntrySchema(Long mainOrderId); | ||||
| int updateCpsStatus(WxOrder order); | int updateCpsStatus(WxOrder order); | ||||
| ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, List<CreateOrderCallback.Good> goods); | |||||
| } | } | ||||
| @@ -38,7 +38,7 @@ public interface WxPayOrderService { | |||||
| */ | */ | ||||
| ResultData createPayOrder(WxAppinfo appInfo, WxCUserBasicInfo user, WxPayOrder record, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); | 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<WxOrder> childOrders, | |||||
| String productName, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); | String productName, EnumPayWay payWay,PayExtraParam params,boolean isCreatePay); | ||||
| /** | /** | ||||
| @@ -63,6 +63,9 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| @Autowired | @Autowired | ||||
| WxAppinfoService wxAppinfoService; | WxAppinfoService wxAppinfoService; | ||||
| @Autowired | |||||
| TtPoiTakeRateMapper ttPoiTakeRateMapper; | |||||
| @Override | @Override | ||||
| public ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { | public ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { | ||||
| PageInfo<TtCouponVo> pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttCouponList(ttCouponVo)); | PageInfo<TtCouponVo> 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); | String spu_id = ttMerchantPoiService.getTtWebService(tenantInfo).getPoiPlanService().poiTakeRate(poiTakeRate); | ||||
| if(StringUtils.isNotBlank(spu_id) && spu_id.equals(ttCouponChannelPoi.getSpuId())){ | 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(); | return new ResultData(); | ||||
| }else{ | }else{ | ||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"设置达人分佣错误"); | return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"设置达人分佣错误"); | ||||
| @@ -548,5 +558,29 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| } | } | ||||
| } | } | ||||
| @Override | |||||
| public PageInfo<TtPoiTakeRate> 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); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.enums.EnumCouponPasswordStatus; | import com.iformall.enums.EnumCouponPasswordStatus; | ||||
| import com.iformall.enums.EnumMsgModelStatus; | |||||
| import com.iformall.enums.EnumMsgSendStatus; | import com.iformall.enums.EnumMsgSendStatus; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.service.WxMsgCallbackService; | import com.iformall.service.WxMsgCallbackService; | ||||
| @@ -174,15 +175,19 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { | |||||
| //approved:审核通过 | //approved:审核通过 | ||||
| //rejected:审核未通过 | //rejected:审核未通过 | ||||
| String templateStatus = param.get("template_status"); | String templateStatus = param.get("template_status"); | ||||
| String reason = param.get("reason"); | |||||
| if("approving".equalsIgnoreCase(templateStatus)){ | if("approving".equalsIgnoreCase(templateStatus)){ | ||||
| wxMsgModel.setStatus(2); | |||||
| return; | |||||
| // wxMsgModel.setStatus(2); | |||||
| }else if("approved".equalsIgnoreCase(templateStatus)){ | }else if("approved".equalsIgnoreCase(templateStatus)){ | ||||
| wxMsgModel.setStatus(1); | |||||
| wxMsgModel.setStatus(EnumMsgModelStatus.SUCCESS.getCode()); | |||||
| }else if("rejected".equalsIgnoreCase(templateStatus)){ | }else if("rejected".equalsIgnoreCase(templateStatus)){ | ||||
| wxMsgModel.setStatus(0); | |||||
| wxMsgModel.setStatus(EnumMsgModelStatus.FAIL.getCode()); | |||||
| }else{ | }else{ | ||||
| wxMsgModel.setStatus(-1); | wxMsgModel.setStatus(-1); | ||||
| } | } | ||||
| wxMsgModel.setReason(reason); | |||||
| wxMsgModelMapper.updateByCode(wxMsgModel); | wxMsgModelMapper.updateByCode(wxMsgModel); | ||||
| WxMsgValidationcodeModel wxMsgValidationcodeModel = new WxMsgValidationcodeModel(); | WxMsgValidationcodeModel wxMsgValidationcodeModel = new WxMsgValidationcodeModel(); | ||||
| @@ -74,7 +74,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { | |||||
| } | } | ||||
| String result = SMSFactory.addTemplate(wxMsgConfig, signature,content, EnumVerifyCode.NO.getCode().toString(), | 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); | JSONObject jsonObjectResult = JSONObject.parseObject(result); | ||||
| String ret = jsonObjectResult.get("ret").toString(); | String ret = jsonObjectResult.get("ret").toString(); | ||||
| logger.info("短信模板创建结果:" + result); | logger.info("短信模板创建结果:" + result); | ||||
| @@ -90,7 +90,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | ||||
| } | } | ||||
| wxMsgModel.setCreatetime(new Date()); | wxMsgModel.setCreatetime(new Date()); | ||||
| wxMsgModel.setStatus(2);//审核中 | |||||
| wxMsgModel.setStatus(EnumMsgModelStatus.AUDITING.getCode());//审核中 | |||||
| wxMsgModelMapper.insert(wxMsgModel); | wxMsgModelMapper.insert(wxMsgModel); | ||||
| } else { | } else { | ||||
| if(jsonObjectResult.get("data") != null){ | if(jsonObjectResult.get("data") != null){ | ||||
| @@ -100,7 +100,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { | |||||
| if(jsonObjectResult.get("aliyunModelCode") != null){ | if(jsonObjectResult.get("aliyunModelCode") != null){ | ||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | ||||
| } | } | ||||
| wxMsgModel.setStatus(2);//审核中 | |||||
| wxMsgModel.setStatus(EnumMsgModelStatus.AUDITING.getCode());//审核中 | |||||
| wxMsgModelMapper.updateById(wxMsgModel); | wxMsgModelMapper.updateById(wxMsgModel); | ||||
| } | } | ||||
| return new ResultData(Result.SUCCESS, "创建模板成功"); | return new ResultData(Result.SUCCESS, "创建模板成功"); | ||||
| @@ -109,7 +109,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| wxMsgModel.setId(idWorker.nextId()); | wxMsgModel.setId(idWorker.nextId()); | ||||
| wxMsgModel.setCreatetime(new Date()); | wxMsgModel.setCreatetime(new Date()); | ||||
| wxMsgModel.setStatus(1); | |||||
| wxMsgModel.setStatus(EnumMsgModelStatus.SUCCESS.getCode()); | |||||
| wxMsgModelMapper.insert(wxMsgModel); | wxMsgModelMapper.insert(wxMsgModel); | ||||
| } else { | } else { | ||||
| wxMsgModelMapper.updateById(wxMsgModel); | wxMsgModelMapper.updateById(wxMsgModel); | ||||
| @@ -138,7 +138,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { | |||||
| public ResultData getModelList(TenantEntity tenantEntity) { | public ResultData getModelList(TenantEntity tenantEntity) { | ||||
| WxMsgModel wxMsgModel = new WxMsgModel(); | WxMsgModel wxMsgModel = new WxMsgModel(); | ||||
| wxMsgModel.updateTenantInfo(tenantEntity); | wxMsgModel.updateTenantInfo(tenantEntity); | ||||
| wxMsgModel.setStatus(1); | |||||
| wxMsgModel.setStatus(EnumMsgModelStatus.SUCCESS.getCode()); | |||||
| List<WxMsgModel> list = wxMsgModelMapper.findList(wxMsgModel); | List<WxMsgModel> list = wxMsgModelMapper.findList(wxMsgModel); | ||||
| return new ResultData(list); | return new ResultData(list); | ||||
| } | } | ||||
| @@ -11,6 +11,7 @@ import java.util.List; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| import java.util.Objects; | import java.util.Objects; | ||||
| import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||
| import java.util.function.Function; | |||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| import javax.servlet.http.HttpServletRequest; | 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.msg.*; | ||||
| import com.iformall.domain.po.tt.TtCUser; | import com.iformall.domain.po.tt.TtCUser; | ||||
| import com.iformall.domain.vo.*; | import com.iformall.domain.vo.*; | ||||
| import com.iformall.douyin.payv2.result.CreateOrderCallback; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| @@ -66,6 +68,8 @@ import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import static java.util.stream.Collectors.groupingBy; | |||||
| @Service | @Service | ||||
| public class WxOrderServiceImpl implements WxOrderService { | public class WxOrderServiceImpl implements WxOrderService { | ||||
| @@ -197,6 +201,9 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| @Autowired | @Autowired | ||||
| WxBatchOrderMapper wxBatchOrderMapper; | WxBatchOrderMapper wxBatchOrderMapper; | ||||
| @Autowired | |||||
| TtCouponChannelPoiMapper ttCouponChannelPoiMapper; | |||||
| @Autowired | @Autowired | ||||
| @Qualifier("couponDetailRedisTemplate") | @Qualifier("couponDetailRedisTemplate") | ||||
| RedisTemplate<String, WxCouponCVo> cdRedisTemplate; | RedisTemplate<String, WxCouponCVo> cdRedisTemplate; | ||||
| @@ -2831,6 +2838,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| if (EnumComposeOrder.isSingle(composeOrderType.getCode())) { | if (EnumComposeOrder.isSingle(composeOrderType.getCode())) { | ||||
| composeOrder.setSingleOrder(lastOrder); | composeOrder.setSingleOrder(lastOrder); | ||||
| } | } | ||||
| List<WxOrder> orderList = orderAdapterService.getChildOrders(composeOrder, tenantEntity.getTenantId()); | |||||
| WxPayOrder record = new WxPayOrder(); | WxPayOrder record = new WxPayOrder(); | ||||
| record.updateTenantInfo(tenantEntity); | record.updateTenantInfo(tenantEntity); | ||||
| record.setOrderId(composeOrder.getMainOrderId()); | record.setOrderId(composeOrder.getMainOrderId()); | ||||
| @@ -2838,7 +2846,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| record.setOpenId((String) composeOrder.getMainOrder().getExpParamValue("open_id")); | record.setOpenId((String) composeOrder.getMainOrder().getExpParamValue("open_id")); | ||||
| String productName = orderAdapterService.getPayProductName(lastCoupon); | String productName = orderAdapterService.getPayProductName(lastCoupon); | ||||
| WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, payWay.getPlat()); | 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()){ | if(payResult.isSuccess()){ | ||||
| return composeOrder; | return composeOrder; | ||||
| }else{ | }else{ | ||||
| @@ -3614,6 +3622,53 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| return wxOrderMapper.updateById(refOrder); | return wxOrderMapper.updateById(refOrder); | ||||
| } | } | ||||
| @Override | |||||
| public ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, List<CreateOrderCallback.Good> 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<WxOrder> childOrders = orderAdapterService.getChildOrders(composeOrder, tenantEntity.getTenantId()); | |||||
| Map<Long, List<WxOrder>> collect = childOrders.stream().collect(groupingBy(WxOrder::getCouponChannelId)); | |||||
| Map<String, CreateOrderCallback.Good> maps = goods.stream().collect(Collectors.toMap(CreateOrderCallback.Good::getGoodsId, Function.identity())); | |||||
| if(collect.keySet().size() == goods.size()){ | |||||
| for (Long key: collect.keySet()) { | |||||
| List<WxOrder> 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<wxOrders.size();i++){ | |||||
| WxOrder updOrder = new WxOrder(); | |||||
| updOrder.updateTenantInfo(tenantEntity); | |||||
| updOrder.setId(wxOrders.get(i).getId()); | |||||
| updOrder.setExtParam(JSON.toJSONString(good.getItemOrderInfoList().get(i))); | |||||
| wxOrderMapper.updateById(updOrder); | |||||
| } | |||||
| }else if(wxOrders.size() == 1){ | |||||
| WxOrder updOrder = new WxOrder(); | |||||
| updOrder.updateTenantInfo(tenantEntity); | |||||
| updOrder.setId(wxOrders.get(0).getId()); | |||||
| updOrder.setExtParam(JSON.toJSONString(good.getItemOrderInfoList())); | |||||
| wxOrderMapper.updateById(updOrder); | |||||
| }else{ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(),"数据异常"); | |||||
| } | |||||
| } | |||||
| return new ResultData(composeOrder); | |||||
| }else{ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(),"数据异常"); | |||||
| } | |||||
| } | |||||
| private Map<Long,List<WxOrderCouponVo>> getBatchOrderMap(TenantEntity tenantEntity,List<Long> batchOrderIds){ | private Map<Long,List<WxOrderCouponVo>> getBatchOrderMap(TenantEntity tenantEntity,List<Long> batchOrderIds){ | ||||
| WxOrder recordQ = new WxOrder(); | WxOrder recordQ = new WxOrder(); | ||||
| recordQ.updateTenantInfo(tenantEntity); | recordQ.updateTenantInfo(tenantEntity); | ||||
| @@ -12,6 +12,7 @@ import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.douyin.payv2.request.TtPayUnifiedOrderV2Request; | |||||
| import com.iformall.douyin.payv2.result.TtPayOrderQueryV2Result; | import com.iformall.douyin.payv2.result.TtPayOrderQueryV2Result; | ||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| @@ -49,6 +50,8 @@ import org.springframework.transaction.annotation.Transactional; | |||||
| import java.text.ParseException; | import java.text.ParseException; | ||||
| import java.util.*; | import java.util.*; | ||||
| import static java.util.stream.Collectors.groupingBy; | |||||
| @Service | @Service | ||||
| public class WxPayOrderServiceImpl implements WxPayOrderService { | public class WxPayOrderServiceImpl implements WxPayOrderService { | ||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | private final Logger logger = LoggerFactory.getLogger(this.getClass()); | ||||
| @@ -77,6 +80,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| @Autowired | @Autowired | ||||
| WxCouponMapper wxCouponMapper; | WxCouponMapper wxCouponMapper; | ||||
| @Autowired | |||||
| WxCouponChannelMapper wxCouponChannelMapper; | |||||
| @Autowired | |||||
| TtCouponChannelPoiMapper ttCouponChannelPoiMapper; | |||||
| @Autowired | @Autowired | ||||
| WxPayOrderMapper wxPayOrderMapper; | WxPayOrderMapper wxPayOrderMapper; | ||||
| @@ -224,7 +233,20 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| } | } | ||||
| } | } | ||||
| return oldRecord; | 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; | return null; | ||||
| } | } | ||||
| @@ -248,7 +270,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| lastCoupon = checkSinglePayOrder(o, user, payWay); | lastCoupon = checkSinglePayOrder(o, user, payWay); | ||||
| } | } | ||||
| String productName = orderAdapterService.getPayProductName(lastCoupon); | 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()) { | if (payResult.isSuccess()) { | ||||
| // wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); | // wxOrderService.sendInsideOrderPushMsg(composeOrder,composeOrder.getMainOrderId()); | ||||
| return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); | return new ResultData(Result.SUCCESS,"创建支付单成功",payResult.getData()); | ||||
| @@ -323,8 +345,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| return wxCoupon; | return wxCoupon; | ||||
| } | } | ||||
| @Override | @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<WxOrder> childOrders, | |||||
| String productName,EnumPayWay payWay,PayExtraParam params,boolean isCreatePay) { | |||||
| IdWorker idworker = IdWorker.get(); | IdWorker idworker = IdWorker.get(); | ||||
| EnumPayShare isShare = EnumPayShare.NO; | EnumPayShare isShare = EnumPayShare.NO; | ||||
| @@ -435,8 +457,31 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| if(!isCreatePay){ | if(!isCreatePay){ | ||||
| PayAdapterResult par = new PayAdapterResult(); | PayAdapterResult par = new PayAdapterResult(); | ||||
| par.setSuccess(true); | par.setSuccess(true); | ||||
| Map<String,String> map = new HashMap<>(); | |||||
| map.put("outOrderNo",record.getOrderId().toString()); | |||||
| Map<String,Object> map = new HashMap<>(); | |||||
| map.put("outOrderNo",record.getOrderId()); | |||||
| map.put("createPay",record.isCreatPay()); | |||||
| if(record.isCreatPay()){ | |||||
| Map<String,Integer> payment = new HashMap(); | |||||
| payment.put("totalAmount",composeOrder.getPayment()); | |||||
| map.put("payment",payment); | |||||
| List<Map<String,Object>> goodsList = new ArrayList<>(); | |||||
| Map<Long, List<WxOrder>> collect = childOrders.stream().collect(groupingBy(WxOrder::getCouponChannelId)); | |||||
| for (Long key: collect.keySet()) { | |||||
| Map<String,Object> 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); | par.setData(map); | ||||
| return par; | return par; | ||||
| } | } | ||||
| @@ -67,7 +67,11 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen | |||||
| @Override | @Override | ||||
| public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,String productName,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception { | 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()); | record.setUpdateTime(new Date()); | ||||
| PayAdapterResult par = new PayAdapterResult(); | PayAdapterResult par = new PayAdapterResult(); | ||||
| par.setSuccess(true); | par.setSuccess(true); | ||||
| @@ -11,5 +11,5 @@ public interface SMSExcutor { | |||||
| String remark); | String remark); | ||||
| String querySmsTemplate(String templateCode); | |||||
| } | } | ||||
| @@ -64,4 +64,8 @@ public class SMSFactory { | |||||
| verifysms,templateName,templateType,remark); | verifysms,templateName,templateType,remark); | ||||
| } | } | ||||
| public static String querySmsTemplate(WxMsgConfig wxMsgConfig, String templateCode) { | |||||
| return getSendExcutor(wxMsgConfig).querySmsTemplate(templateCode); | |||||
| } | |||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.sms.aliyun; | package com.iformall.sms.aliyun; | ||||
| import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.aliyuncs.DefaultAcsClient; | import com.aliyuncs.DefaultAcsClient; | ||||
| import com.aliyuncs.IAcsClient; | import com.aliyuncs.IAcsClient; | ||||
| import com.aliyuncs.dysmsapi.model.v20170525.*; | import com.aliyuncs.dysmsapi.model.v20170525.*; | ||||
| @@ -63,6 +64,21 @@ public class AliyunSMS implements SMSExcutor { | |||||
| return JSON.toJSONString(SMSResult); | 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 | * @param sms | ||||
| @@ -317,7 +333,7 @@ public class AliyunSMS implements SMSExcutor { | |||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| QuerySmsTemplateRequest request = new QuerySmsTemplateRequest(); | QuerySmsTemplateRequest request = new QuerySmsTemplateRequest(); | ||||
| request.setTemplateCode("SMS_244430122"); | |||||
| request.setTemplateCode("SMS_244585929"); | |||||
| DefaultAcsClient acsClient = new DefaultAcsClient(profile); | DefaultAcsClient acsClient = new DefaultAcsClient(profile); | ||||
| QuerySmsTemplateResponse response = null; | QuerySmsTemplateResponse response = null; | ||||
| @@ -36,6 +36,11 @@ public class WiwideUtil implements SMSExcutor { | |||||
| return addTemplate(secret, bid, publickey, signature, content, notifyUrl,verifysms); | 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) { | public static String addTemplate(String secret, String bid, String publickey, String signature, String content, String notifyUrl, String verifysms) { | ||||
| //请求api数据排序 | //请求api数据排序 | ||||
| TreeMap<String, String> message = new TreeMap<>(); | TreeMap<String, String> message = new TreeMap<>(); | ||||
| @@ -0,0 +1,72 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.TtPoiTakeRateMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.TtPoiTakeRate"> | |||||
| <id column="id" jdbcType="BIGINT" property="id"/> | |||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||||
| <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/> | |||||
| <result column="coupon_id" jdbcType="BIGINT" property="couponId"/> | |||||
| <result column="douyin_id" jdbcType="VARCHAR" property="douyinId" /> | |||||
| <result column="take_rate" jdbcType="INTEGER" property="takeRate"/> | |||||
| <result column="status" jdbcType="INTEGER" property="status"/> | |||||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | |||||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`douyin_id`, | |||||
| `take_rate`,`status`, | |||||
| `create_date`,`update_date` | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != couponId "> | |||||
| and `coupon_id` = #{couponId} | |||||
| </if> | |||||
| <if test=" null != douyinId and '' != douyinId"> | |||||
| and `douyin_id` = #{douyinId} | |||||
| </if> | |||||
| <if test=" null != status "> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| </sql> | |||||
| <select id="selectByCouponAndDouyin" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns"/> | |||||
| from tt_poi_take_rate | |||||
| where tenant_id = #{tenantId} | |||||
| and `coupon_id` = #{couponId} | |||||
| and `douyin_id` = #{douyinId} | |||||
| </select> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.TtPoiTakeRate" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from tt_poi_take_rate | |||||
| <include refid="dynamicWhereConditions"/> | |||||
| </select> | |||||
| </mapper> | |||||
| @@ -10,13 +10,15 @@ | |||||
| <result column="content" jdbcType="VARCHAR" property="content"/> | <result column="content" jdbcType="VARCHAR" property="content"/> | ||||
| <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/> | <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/> | ||||
| <result column="status" jdbcType="INTEGER" property="status"/> | <result column="status" jdbcType="INTEGER" property="status"/> | ||||
| <result column="reason" jdbcType="INTEGER" property="reason"/> | |||||
| <result column="model_id" jdbcType="INTEGER" property="modelId"/> | <result column="model_id" jdbcType="INTEGER" property="modelId"/> | ||||
| <result column="template_type" jdbcType="INTEGER" property="templateType"/> | |||||
| <result column="model_code" jdbcType="VARCHAR" property="modelCode"/> | <result column="model_code" jdbcType="VARCHAR" property="modelCode"/> | ||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| `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` | |||||
| </sql> | </sql> | ||||
| <sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||
| @@ -55,6 +57,9 @@ | |||||
| <if test=" null != modelId"> | <if test=" null != modelId"> | ||||
| and `model_id` = #{modelId} | and `model_id` = #{modelId} | ||||
| </if> | </if> | ||||
| <if test=" null != templateType"> | |||||
| and `template_type` = #{templateType} | |||||
| </if> | |||||
| <if test=" null != modelCode"> | <if test=" null != modelCode"> | ||||
| and `model_code` = #{modelCode} | and `model_code` = #{modelCode} | ||||
| </if> | </if> | ||||
| @@ -74,6 +79,15 @@ | |||||
| <include refid="dynamicWhereConditions"/> | <include refid="dynamicWhereConditions"/> | ||||
| </select> | </select> | ||||
| <select id="findAliYunList" parameterType="com.iformall.domain.po.WxMsgModel" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from wx_msg_model | |||||
| where ifnull(model_code,'') != ''; | |||||
| and `status` = #{status} | |||||
| </select> | |||||
| <select id="findOneByModelId" parameterType="com.iformall.domain.po.WxMsgModel" resultMap="BaseResultMap"> | <select id="findOneByModelId" parameterType="com.iformall.domain.po.WxMsgModel" resultMap="BaseResultMap"> | ||||
| select | select | ||||
| <include refid="allColumns"/> | <include refid="allColumns"/> | ||||
| @@ -92,7 +106,7 @@ | |||||
| </select> | </select> | ||||
| <update id="updateByCode" parameterType="com.iformall.domain.po.WxMsgModel"> | <update id="updateByCode" parameterType="com.iformall.domain.po.WxMsgModel"> | ||||
| update wx_msg_model set status=#{status} where `model_code` = #{modelCode} | |||||
| update wx_msg_model set status=#{status},reason=#{reason} where `model_code` = #{modelCode} | |||||
| </update> | </update> | ||||
| </mapper> | </mapper> | ||||