diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/device/WxScreenAdController.java b/mallinkAdmin/src/main/java/com/iformall/controller/device/WxScreenAdController.java index 163051be3..af192843e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/device/WxScreenAdController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/device/WxScreenAdController.java @@ -84,7 +84,7 @@ public class WxScreenAdController extends BaseController { Object target = null; if (wxScreenAd.getType().equals(EnumScreenAdType.COUPON.getCode())) - target = wxCouponChannelService.findDetailVo(wxScreenAd.getTargetId(),wxScreenAd.getTenantId()); + target = wxCouponChannelService.findDetailVo(wxScreenAd.getTargetId(),wxScreenAd.getTenantId(),true); if (wxScreenAd.getType().equals(EnumScreenAdType.COUPON.getCode())) target = wxCampaignService.getById(wxScreenAd.getTargetId()); diff --git a/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java b/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java index 1f07d1272..75d73a0fe 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java @@ -82,7 +82,7 @@ public class WxDeviceScreenAdController extends BaseController { page.getList().stream().forEach(s->{ Object target = null; if (s.getType().equals(EnumScreenAdType.COUPON.getCode())) - target = wxCouponChannelService.findDetailVo(s.getTargetId(),wxScreenAd.getTenantId()); + target = wxCouponChannelService.findDetailVo(s.getTargetId(),wxScreenAd.getTenantId(),true); else if (s.getType().equals(EnumScreenAdType.CAMPAIGN.getCode())) target = wxCampaignService.getById(s.getTargetId()); else if (s.getType().equals(EnumScreenAdType.MERCHANT.getCode())) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java index fd906f48c..c4572e110 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java @@ -19,13 +19,9 @@ public interface WxCouponChannelMapper extends CommonMapper findVoList(WxCouponChannel wxCouponChannel); + WxCouponChannel findVoDetail(@Param("id")Long id,@Param("tenantId")String tenantId); -// List findVoListByMerchant(WxCouponChannel wxCouponChannel); - - WxCouponCVo findVoDetail(@Param("id")Long id,@Param("tenantId")String tenantId); - - WxCouponCVo findVoStatusDetail(@Param("id")Long id,@Param("tenantId")String tenantId); + WxCouponChannel findVoStatusDetail(@Param("id")Long id,@Param("tenantId")String tenantId); void updateStatusByCouponId(WxCouponChannel wxCouponChannel); @@ -50,5 +46,5 @@ public interface WxCouponChannelMapper extends CommonMapper newfindCList(WxCouponChannel wxCouponChannel); + List newfindCList(WxCouponChannel wxCouponChannel); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index 5416a9900..bd1b8d0d2 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -21,6 +21,8 @@ public interface WxCouponMapper extends CommonMapper { WxCoupon findSimpleDetail(WxCoupon wxCoupon); List findSimpleDetailList(WxCoupon wxCoupon); + WxCoupon findCouponCVoDetail(WxCoupon wxCoupon); + List findIdList(WxCoupon wxCoupon); List findCouponList(WxCoupon wxCoupon); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java index 49e3ace63..7713d3044 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java @@ -56,8 +56,6 @@ public interface WxMerchantMapper extends CommonMapper { WxMerchant getMerchantByEncode(@Param("encode")String encode); - List findFollowList(WxMerchant record); - int recordedAmount(WxMerchant record); List> findMerchantByShop(@Param("shopId")Long shopId); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java index 52e1c3a0d..dd1309d3d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponChannelService.java @@ -21,39 +21,13 @@ public interface WxCouponChannelService { * @return */ PageInfo listAsPage(WxCouponChannel record, Integer pageIndex, Integer pageSize); + List findList(WxCouponChannel record); - /** - * 根据实体查询Vo分页列表 - * - * @param record - * @param pageIndex - * @param pageSize - * @return - */ -// PageInfo listPageCVo(WxCouponChannel record, Integer pageIndex, Integer pageSize); - - /** - * 查询商户的券信息 - * @param record - * @param pageIndex - * @param pageSize - * @return - */ -// PageInfo listByMerchant(WxCouponChannel record, Integer pageIndex, Integer pageSize); - - WxCouponCVo findDetailVo(Long id,String tenantId); + WxCouponCVo findDetailVo(Long id,String tenantId,boolean hasMerchant); WxCouponCVo findVoStatusDetail(Long id,String tenantId); - /** - * 根据实体查询Vo分页列表 - * - * @param record - * @return - */ -// List listVo(WxCouponChannel record); - /** * 根据Id获得实体 * diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index 8d3aa9d8a..96aba3c73 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -166,12 +166,6 @@ public interface WxMerchantService { List getMerchantShopIds(Long merchantId); - - void followMerchant(TenantEntity tenantEntity, Long memberId, Long id); - void cancelFollow(Long memberId, Long id); - int getfollow(Long memberId, Long id); - PageInfo followListAsPage(WxMerchant record, Integer pageNum, Integer pageSize); - ResultData damark(WxMerchant wxMerchant, TenantEntity tenantInfo); ResultData downmark(WxMerchant wxMerchant); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java index a5347c99f..2231e832d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java @@ -315,7 +315,7 @@ public class WxCampaignServiceImpl implements WxCampaignService { wxCouponChannelQ.setCouponId(couponId); wxCouponChannelQ.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); wxCouponChannelQ.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_LIST.getCode()); - List voList = wxCouponChannelMapper.newfindCList(wxCouponChannelQ); + List voList = wxCouponChannelMapper.newfindCList(wxCouponChannelQ); // 不存在的, 新增 wxCouponChannel = new WxCouponChannel(); if(voList != null && voList.size() > 0){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index be1154754..fc30aab6c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -23,6 +23,7 @@ import com.iformall.utils.JsonUtil; import com.iformall.utils.RedisCacheUtils; import com.iformall.utils.RedisUtils; +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,6 +33,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; +import java.lang.reflect.InvocationTargetException; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -83,6 +85,11 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.findList(record)); } + @Override + public List findList(WxCouponChannel record){ + return wxCouponChannelMapper.findList(record); + } + @Override public WxCouponChannel getById(Long id,String tenantId) { return wxCouponChannelMapper.selectById(id,tenantId); @@ -343,15 +350,29 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { wxCouponChannel.setCouponIds(cids); } - private void handleWxCouponChannelVo(List list, TenantEntity tenantEntity){ + private List handleWxCouponChannelVo(List list, TenantEntity tenantEntity){ if(list == null || list.isEmpty()){ - return; + return null; } List couponIds = list.stream().map(cc -> cc.getCouponId()).collect(Collectors.toList()); Map couponMap = wxCouponService.getCouponMap(couponIds,tenantEntity); - for (WxCouponChannelVo cc:list) { - cc.setWxCoupon(couponMap.get(cc.getCouponId())); + List retList = new ArrayList<>(); + for (WxCouponChannel cc:list) { + try { + WxCouponChannelVo vo = new WxCouponChannelVo(); + BeanUtils.copyProperties(vo, cc); + vo.setWxCoupon(couponMap.get(cc.getCouponId())); + retList.add(vo); + } catch (IllegalAccessException e) { + logger.error("handleWxCouponChannelVo error.",e); + } catch (InvocationTargetException e) { + logger.error("handleWxCouponChannelVo error.",e); + } + } + if (retList.size() <= 0 ) { + return null; } + return retList; } @@ -361,9 +382,8 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { if(wxCouponChannel.getId() != null && wxCouponChannel.getId().equals(-999L)){ return new ArrayList<>(); } - List list = wxCouponChannelMapper.newfindCList(wxCouponChannel); - handleWxCouponChannelVo(list,wxCouponChannel); - return list; + List list = wxCouponChannelMapper.newfindCList(wxCouponChannel); + return handleWxCouponChannelVo(list,wxCouponChannel); } /** @@ -380,9 +400,14 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { if(record.getId() != null && record.getId().equals(-999L)){ return new PageInfo(); } - PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.newfindCList(record)); - handleWxCouponChannelVo(pageInfo.getList(),record); - return pageInfo; + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.newfindCList(record)); + PageInfo retPageInfo = new PageInfo(); + retPageInfo.setPageNum(pageInfo.getPageNum()); + retPageInfo.setPageSize(pageInfo.getPageSize()); + retPageInfo.setPages(pageInfo.getPages()); + retPageInfo.setTotal(pageInfo.getTotal()); + retPageInfo.setList(handleWxCouponChannelVo(pageInfo.getList(),record)); + return retPageInfo; } private boolean isCouponMerchantValid(Long couponId,String tenantId) { @@ -485,60 +510,69 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { return vo; } - /** - * C端api使用,关联查找的券时已生效 - * @param record - * @param pageIndex - * @param pageSize - * @return - */ -// @Override -// public PageInfo listPageCVo(WxCouponChannel record, Integer pageIndex, Integer pageSize) { -// PageInfo pageInfo; -// //仅c端首页走缓存 -// if((EnumCouponChannelType.COUPON_CHANNEL_ID_LIST.getCode().equals(record.getTargetAd()) -// || EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode().equals(record.getTargetAd())) -// && new Integer(6).equals(pageSize) -// && pageIndex.intValue() <=5 -// && record.getBusiness() == null) { -// -// logger.info("listPageCVo.chache"); -// String key = EnumCacheKey.C_INDEX_PAGE_LIST.getMessage() +record.getTenantId()+"_" + pageIndex + ":"; -// ValueOperations> operations = cdRedisTemplate.opsForValue(); -// boolean hasKey = cdRedisTemplate.hasKey(key); -// if (hasKey) { -// pageInfo = operations.get(key); -// logger.info("listPageCVo.chache.get:{}", pageInfo.getList()==null?0:pageInfo.getList().size()); -// }else{ -// pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.findVoList(record)); -// //插入缓存 -// operations.set(key, pageInfo, 600, TimeUnit.SECONDS); -// } -// return pageInfo; -// } -// -// return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.findVoList(record)); -// } - @Override - public WxCouponCVo findDetailVo(Long id,String tenantId) { - return wxCouponChannelMapper.findVoDetail(id,tenantId); + public WxCouponCVo findDetailVo(Long id,String tenantId,boolean hasMerchant) { + WxCouponChannel cc = wxCouponChannelMapper.findVoDetail(id,tenantId); + return couponChannelToCouponCVo(cc,hasMerchant); + + } + + private WxCouponCVo couponChannelToCouponCVo(WxCouponChannel cc,boolean hasMerchant) { + if (null == cc) { + return null; + } + try { + WxCoupon couponQ = new WxCoupon(); + couponQ.updateTenantInfo(cc); + couponQ.setId(cc.getCouponId()); + WxCoupon coupon = wxCouponMapper.findCouponCVoDetail(couponQ); + if (null == coupon) { + return null; + } + WxCouponCVo cvo = new WxCouponCVo(); + BeanUtils.copyProperties(cvo, coupon); + + cvo.setId(cc.getId()); + cvo.setCouponId(cc.getCouponId()); + cvo.setTargetAd(cc.getTargetAd()); + cvo.setBeginTime(cc.getBeginTime()); + cvo.setEndTime(cc.getEndTime()); + cvo.updateTenantInfo(cc); + cvo.setQrCode(cc.getQrCode()); + cvo.setTtQrCode(cc.getTtQrCode()); + if (hasMerchant) { + cvo.setMerchantVoList(wxCouponMerchantMapper.findMerchantVoList(cc.getCouponId(), cc.getTenantId())); + } + return cvo; + } catch (IllegalAccessException e) { + logger.error("couponChannelToCouponCVo error.",e); + } catch (InvocationTargetException e) { + logger.error("couponChannelToCouponCVo error.",e); + } + + return null; } @Override public WxCouponCVo findVoStatusDetail(Long id,String tenantId) { - return wxCouponChannelMapper.findVoStatusDetail(id,tenantId); + WxCouponChannel cc = wxCouponChannelMapper.findVoStatusDetail(id,tenantId); + if (null == cc) { + return null; + } + WxCoupon couponQ = new WxCoupon(); + couponQ.updateTenantInfo(cc); + couponQ.setId(cc.getCouponId()); + WxCoupon coupon = wxCouponMapper.findCouponCVoDetail(couponQ); + if (null == coupon) { + return null; + } + WxCouponCVo cvo = new WxCouponCVo(); + cvo.setId(cc.getId()); + cvo.setCouponId(cc.getCouponId()); + cvo.setRemainInventory(coupon.getRemainInventory()); + cvo.setStatus(coupon.getStatus()); + return cvo; } -// @Override -// public List listVo(WxCouponChannel record) { -// return wxCouponChannelMapper.findVoList(record); -// } - -// @Override -// public PageInfo listByMerchant(WxCouponChannel record, Integer pageNum, Integer pageSize) { -// return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponChannelMapper.findVoListByMerchant(record)); -// } - } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 242487f2e..4d95037a1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -1077,43 +1077,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { return wxMerchantShopMapper.findShopIds(merchantIds); } - @Override - public void followMerchant(TenantEntity tenantEntity, Long memberId, Long id) { - final IdWorker idWorker = IdWorker.get(); - TtUserFollow userFollow = new TtUserFollow(); - userFollow.setId(idWorker.nextId()); - userFollow.updateTenantInfo(tenantEntity); - userFollow.setUserId(memberId); - userFollow.setMerchernId(id); - userFollow.setCreateDate(new Date()); - userFollow.setUpdateDate(new Date()); - try { - ttUserFollowMapper.insert(userFollow); - } catch (Exception e) { -// e.printStackTrace(); - } - } - - @Override - public void cancelFollow(Long memberId, Long id) { - TtUserFollow userFollow = new TtUserFollow(); - userFollow.setUserId(memberId); - userFollow.setMerchernId(id); - int delete = ttUserFollowMapper.delete(new QueryWrapper<>(userFollow)); - } - - @Override - public int getfollow(Long memberId, Long id) { - TtUserFollow userFollow = new TtUserFollow(); - userFollow.setUserId(memberId); - userFollow.setMerchernId(id); - return ttUserFollowMapper.selectCount(new QueryWrapper<>(userFollow)); - } - - @Override - public PageInfo followListAsPage(WxMerchant record, Integer pageNum, Integer pageSize) { - return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxMerchantMapper.findFollowList(record)); - } @Override public ResultData damark(WxMerchant wxMerchant, TenantEntity tenantInfo) { 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 31949ed5f..0068499be 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2695,7 +2695,7 @@ public class WxOrderServiceImpl implements WxOrderService { wxCouponCVo = operations.get(key); } else { // 游戏没有入缓存,需要从数据库中读取 - wxCouponCVo = wxCouponChannelService.findDetailVo(orderSaveDto.getCouponChannelId(),wxCouponChannel.getTenantId()); + wxCouponCVo = wxCouponChannelService.findDetailVo(orderSaveDto.getCouponChannelId(),wxCouponChannel.getTenantId(),false); if (wxCouponCVo != null) { // 游戏优化,进缓存 cdRedisTemplate.opsForValue().set(key, wxCouponCVo, 3600, TimeUnit.SECONDS); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java index 8479b5a53..c3fee56bc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java @@ -17,6 +17,7 @@ import com.iformall.mapper.WxCampaignMapper; import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxScreenAdMapper; import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxMerchantService; import com.iformall.service.WxScreenAdService; import com.iformall.service.wechat.FmOpenService; @@ -25,6 +26,7 @@ import me.chanjar.weixin.common.error.WxErrorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.Date; @@ -40,8 +42,9 @@ public class WxScreenAdServiceImpl implements WxScreenAdService { @Autowired WxAppinfoService wxAppinfoService; + @Lazy @Autowired - WxCouponChannelMapper wxCouponChannelMapper; + WxCouponChannelService wxCouponChannelService; @Autowired WxMerchantService wxMerchantService; @@ -68,7 +71,7 @@ public class WxScreenAdServiceImpl implements WxScreenAdService { if (record.getType().equals(EnumScreenAdType.COUPON.getCode())) { if (record.getTargetId() == null) return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); - WxCouponCVo wxCouponCVo = wxCouponChannelMapper.findVoDetail(record.getTargetId(),record.getTenantId()); + WxCouponCVo wxCouponCVo = wxCouponChannelService.findDetailVo(record.getTargetId(),record.getTenantId(),false); if (wxCouponCVo == null) return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); record.setCoverImg(wxCouponCVo.getCoverImg()); @@ -142,7 +145,7 @@ public class WxScreenAdServiceImpl implements WxScreenAdService { wxCouponChannel.updateTenantInfo(tenantEntity); wxCouponChannel.setCouponId(couponId); - List list = wxCouponChannelMapper.findList(wxCouponChannel); + List list = wxCouponChannelService.findList(wxCouponChannel); list.stream().forEach(cc->{ WxScreenAd wxScreenAd = new WxScreenAd(); diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index 1828c3e55..ffcad12ca 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -160,229 +160,18 @@ - - , - c.remain_inventory,c.inventory,c.cover_img,c.sub_title,c.sale_price,c.detail, - c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.use_limit_rule,c.use_limit_quantity,c.send_type,c.support_transfer,c.press_limit_num,c.auto_refund,c.conditions, - c.valid_type,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date,c.valid_days,c.credit_price,c.content_type,c.source_type - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + select + cc.id,cc.coupon_id,cc.target_ad,cc.begin_time,cc.end_time,cc.tenant_id,cc.parent_tenant_id,cc.qr_code,cc.tt_qr_code + from wx_coupon_channel cc where cc.id = #{id} and cc.tenant_id = #{tenantId} - - cc.id,cc.coupon_id,cc.target_ad,cc.begin_time,cc.end_time, - c.tenant_id,c.parent_tenant_id,c.type,c.cover_img,c.cover_picture,c.detail_picture,c.title,c.sub_title,c.sale_price,c.use_price, - c.use_limit_rule,c.use_limit_quantity,c.send_type,c.valid_type,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, - c.valid_days,c.detail,c.price,c.tail_price,c.orig_price,c.unit,c.remain_inventory,c.inventory,c.remark,c.status, - c.create_date,c.update_date,c.business,c.sub_business,c.support_transfer,c.press_limit_num, c.auto_refund,c.credit_price,c.conditions,c.content_type, - cc.qr_code,cc.tt_qr_code - - - - cc.id,cc.coupon_id,c.remain_inventory,c.status - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + select cc.id,cc.coupon_id from wx_coupon_channel cc - left join wx_coupon c on cc.coupon_id = c.id where cc.id = #{id} and cc.tenant_id = #{tenantId} - - + + + + + - -