From 857bd33be47f88cc9617bf6d6d82f5ac8b234486 Mon Sep 17 00:00:00 2001 From: hupeng Date: Wed, 19 Sep 2018 15:35:53 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=9A=E5=91=98][=E6=9B=B4=E6=94=B9]:?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E6=A0=87=E7=AD=BE=E5=8F=91=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E5=92=8C=E5=AE=9A=E5=90=91=E6=8A=95=E6=94=BE=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CouponInjectController.java | 2 +- .../WxCUserBasicInfoController.java | 2 +- .../iformall/controller/WxTagsController.java | 2 +- .../java/com/iformall/common/ErrorCode.java | 8 +++- .../enums/EnumCouponInjectStatus.java | 40 +++++++++++++++++++ .../iformall/mapper/WxCUserTagsMapper.java | 9 +++-- .../iformall/service/WxCUserTagsService.java | 31 ++++++++++---- .../service/impl/CouponInjectServiceImpl.java | 32 +++++++-------- .../service/impl/WxCUserTagsServiceImpl.java | 40 +++++++++++++++---- .../service/impl/WxMsgServiceImpl.java | 33 +++++++-------- .../resources/mapper/WxCUserTagsMapper.xml | 31 ++++++++++---- 11 files changed, 165 insertions(+), 65 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java b/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java index 99a75cc8c..f8d8d61d0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java @@ -89,7 +89,7 @@ public class CouponInjectController extends BaseController { CouponInject couponInject = couponInjectService.getById(id); if (couponInject != null) { List tagids = JSON.parseArray(couponInject.getTags(), Long.class); - couponInject.setWxChooseTagVo(wxCUserTagsService.findChooseTag(tagids)); + couponInject.setWxChooseTagVo(wxCUserTagsService.findChooseTag(getTenantId(), tagids)); } return new ResultData(Result.SUCCESS, "查询成功", couponInject); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index 5e8588d1f..966e449d0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -159,7 +159,7 @@ public class WxCUserBasicInfoController extends BaseController { if (StringUtils.isNoneBlank(tagIds)) { info.setTagIds(tagIds.substring(0, tagIds.length() - 1)); } - long count = wxCUserTagsService.findCountByTag(tagIdList); + long count = wxCUserTagsService.findCountByTag(getTenantId(), tagIdList); info.setCount(count); } } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxTagsController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxTagsController.java index 727595b32..e369761f2 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxTagsController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxTagsController.java @@ -113,7 +113,7 @@ public class WxTagsController extends BaseController { // } // map.put("names",endName ); // map.put("tagIds", ids); - long count = wxCUserTagsService.findCountByTag(Arrays.asList(tagIds)); + long count = wxCUserTagsService.findCountByTag(getTenantId(), Arrays.asList(tagIds)); return new ResultData(Result.SUCCESS,"查询成功",count); } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index fe2b28475..82677a26b 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -207,7 +207,13 @@ public enum ErrorCode{ /** * 会员 */ - MEM_IMPORT_ERR(13000, "模板导入失败") + MEM_IMPORT_ERR(13000, "模板导入失败"), + + /** + * 标签 + */ + TAGS_MATCHED_NULL(14000, "此标签没命中用户") + ; private int code; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java new file mode 100644 index 000000000..1655ab7dc --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java @@ -0,0 +1,40 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponInjectStatus { + + //0:待发送1:发送中2:已发送3:发送失败4已作废 + PENDING(0, "待发送"), + SENDING(1, "发送中"), + HAS_SENT(2, "已发送"), + SEND_FAILED(3, "发送失败"), + INVALID(4, "已作废") + ; + + public static EnumCouponInjectStatus getEnum(Integer code) { + for (EnumCouponInjectStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponInjectStatus(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/WxCUserTagsMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserTagsMapper.java index 866a6ebfe..cdc77ace9 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserTagsMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserTagsMapper.java @@ -10,10 +10,11 @@ public interface WxCUserTagsMapper extends CommonMapper { List findList(WxCUserTags wxCUserTags); - List findUserByTag(@Param("tagIds")String tagIds); + long findCountByTags(@Param("tagIds")String tagIds, @Param("tenantId")String tenantId); - long findCountByTags(@Param("tagIds")String tagIds); + long findCUserCountByTags(@Param("tagIds")String tagIds, @Param("tenantId")String tenantId); - List findUserByTags(@Param("tagIds")String tagIds); - + List findByTags(@Param("tagIds")String tagIds,@Param("tenantId")String tenantId); + + List findCUserByTags(@Param("tagIds")String tagIds,@Param("tenantId")String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserTagsService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserTagsService.java index 82988f90a..d3862238d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserTagsService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserTagsService.java @@ -4,6 +4,7 @@ import java.util.List; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCUserTags; import com.iformall.domain.vo.WxChooseTagVo; @@ -42,25 +43,41 @@ public interface WxCUserTagsService { void deleteById(Long id); /** - * tagIds查询 用户数量 + * tagIds查询 用户数量(会员列表中的user) * @param tagIds * @return */ - long findCountByTag(List tagIds); + long findCountByTag(String tenantId, List tagIds); - /** + /** + * + * tagIds查询用户user信息集合(会员列表中的user) + * @param tagIds + * @return + */ + List findByTag(String tenantId, List tagIds); + + + /** + * tagIds查询 用户数量(登陆过C端的用户,并且保有手机号) + * @param tagIds + * @return + */ + long findCUserCountByTag(String tenantId, List tagIds); + + /** * - * tagIds查询用户user信息集合 + * tagIds查询用户user信息集合(登陆过C端的用户,并且保有手机号) * @param tagIds * @return */ - List findUserByTag(List tagIds); + List findCUserByTag(String tenantId, List tagIds); /** - * 获取用户数量和tags name + * 获取用户数量和tags name(登陆过C端的用户,并且保有手机号) * @param tagIds * @return */ - WxChooseTagVo findChooseTag(List tagIds); + WxChooseTagVo findChooseTag(String tenantId, List tagIds); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java index 44a9b1a1a..fd4bd4be6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java @@ -8,9 +8,7 @@ import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; -import com.iformall.enums.EnumCouponSendType; -import com.iformall.enums.EnumCouponStatus; -import com.iformall.enums.EnumCouponValidType; +import com.iformall.enums.*; import com.iformall.mapper.CouponInjectMapper; import com.iformall.service.*; import org.apache.commons.lang3.time.DateUtils; @@ -77,36 +75,38 @@ public class CouponInjectServiceImpl implements CouponInjectService { if(wxCoupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()){ return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } - if(wxCoupon.getSendType()!=EnumCouponSendType.PASSIVE.getCode()) { + if(wxCoupon.getSendType()!= EnumCouponSendType.PASSIVE.getCode()) { return new ResultData(ErrorCode.COUPON_TYPE_IS_NOT_PASSIVE); } - //解析前台tags,并转换json String[] arys = record.getTags().split(","); List tagids = new ArrayList<>(); for (int i = 0; i < arys.length; i++) { tagids.add(Long.parseLong(arys[i])); } + + List cUsers = wxCUserTagsService.findCUserByTag(record.getTenantId(), tagids); + if(cUsers.isEmpty()){ + return new ResultData(ErrorCode.TAGS_MATCHED_NULL); + } + int inventory = wxCoupon.getRemainInventory();//库存数量 + if(cUsers.size()>inventory){ + return new ResultData(ErrorCode.COUPON_IS_SELL_OUT); + } + record.setTags(JSON.toJSONString(arys)); //生成雪花id final IdWorker idWorker = new IdWorker(0, 0); record.setId(idWorker.nextId()); - if(record.getSendType()==0){ - record.setStatus(1); + if(record.getSendType() == EnumCouponInjectSendType.IMMEDIATE.getCode()){ + record.setStatus(EnumCouponInjectStatus.SENDING.getCode()); record.setSendTime(new Date()); }else{ - record.setStatus(0); - } - List cUsers = wxCUserTagsService.findUserByTag(tagids); - if(cUsers.isEmpty()){ - return new ResultData(Result.ERROR,"标签下没有用户"); - } - int inventory = wxCoupon.getRemainInventory();//库存数量 - if(cUsers.size()>inventory){ - return new ResultData(ErrorCode.COUPON_IS_SELL_OUT); + record.setStatus(EnumCouponInjectStatus.PENDING.getCode()); } + record.setCouponName(wxCoupon.getTitle()); record.setSendAmount(cUsers.size()); couponInjectMapper.insertSelective(record); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java index 9b1e440cf..6f5f61766 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; +import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.mapper.WxCUserBasicInfoMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,9 +27,12 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { @Autowired WxCUserTagsMapper wxCUserTagsMapper; + @Autowired + WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + @Autowired WxCUserMapper wxCUserMapper; - + @Autowired WxTagsMapper wxTagsMapper; @@ -60,25 +65,46 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { } @Override - public long findCountByTag(List tagIds) { + public long findCountByTag(String tenantId, List tagIds) { String str = JSON.toJSONString(tagIds); - return wxCUserTagsMapper.findCountByTags(str); + return wxCUserTagsMapper.findCountByTags(str,tenantId); } @Override - public List findUserByTag(List tagIds) { + public long findCUserCountByTag(String tenantId, List tagIds) { String str = JSON.toJSONString(tagIds); - List userIds = wxCUserTagsMapper.findUserByTags(str); + return wxCUserTagsMapper.findCUserCountByTags(str,tenantId); + } + + @Override + public List findCUserByTag(String tenantId, List tagIds) { + String str = JSON.toJSONString(tagIds); + List userIds = wxCUserTagsMapper.findCUserByTags(str,tenantId); if(userIds.size()==0) { return new ArrayList<>(); } + WxCUser wxCUser = new WxCUser(); wxCUser.setIds(userIds); return wxCUserMapper.findList(wxCUser); } @Override - public WxChooseTagVo findChooseTag(List tagIds) { + public List findByTag(String tenantId, List tagIds) { + String str = JSON.toJSONString(tagIds); + List userIds = wxCUserTagsMapper.findByTags(str,tenantId); + if(userIds.size()==0) { + return new ArrayList<>(); + } + + WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); + wxCUserBasicInfo.setIds(userIds); + return wxCUserBasicInfoMapper.findList(wxCUserBasicInfo); + } + + + @Override + public WxChooseTagVo findChooseTag(String tenantId, List tagIds) { WxTags wxTags =new WxTags(); wxTags.setIds(tagIds); List list = wxTagsMapper.findList(wxTags); @@ -92,7 +118,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { } WxChooseTagVo vo =new WxChooseTagVo(); vo.setNames(endName); - vo.setUserCount(findCountByTag(tagIds)); + vo.setUserCount(findCUserCountByTag(tenantId,tagIds)); return vo; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java index 759851fa8..300ea889b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java @@ -9,12 +9,12 @@ import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxMsg; import com.iformall.domain.po.WxMsgConfig; -import com.iformall.mapper.WxCUserMapper; -import com.iformall.mapper.WxCUserTagsMapper; -import com.iformall.mapper.WxMsgConfigMapper; -import com.iformall.mapper.WxMsgMapper; +import com.iformall.mapper.*; +import com.iformall.service.WxCUserService; +import com.iformall.service.WxCUserTagsService; import com.iformall.service.WxMsgService; import com.iformall.utils.AesUtil; import com.iformall.utils.HMACSHA256; @@ -35,10 +35,10 @@ public class WxMsgServiceImpl implements WxMsgService { WxMsgConfigMapper wxMsgConfigMapper; @Autowired - WxCUserTagsMapper wxCUserTagsMapper; + WxCUserTagsService wxCUserTagsService; @Autowired - WxCUserMapper wxCUserMapper; + WxCUserBasicInfoMapper wxCUserBasicInfoMapper; @Override public PageInfo listAsPage(WxMsg record, Integer pageIndex, Integer pageSize) { @@ -60,9 +60,9 @@ public class WxMsgServiceImpl implements WxMsgService { String phones=wxMsg.getPhones(); if(phones.equals("")){ if(null!=wxMsg.getExcelpath() && !wxMsg.getExcelpath().equals("")) - phones=parseexcle(wxMsg.getExcelpath()); + phones=parseexcle(wxMsg.getTenantId(), wxMsg.getExcelpath()); else - phones=parselabel(wxMsg.getLabel()); + phones=parselabel(wxMsg.getTenantId(), wxMsg.getLabel()); } if(phones.equals("")){ @@ -118,30 +118,25 @@ public class WxMsgServiceImpl implements WxMsgService { return new ResultData(); } - private String parselabel(String label) { + private String parselabel(String tenantId, String label) { String[] arys = label.split(","); List tagids = new ArrayList<>(); for (int i = 0; i < arys.length; i++) { tagids.add(Long.parseLong(arys[i])); } - List userIds = wxCUserTagsMapper.findUserByTag(JSON.toJSONString(tagids)); - if(userIds.size()==0) { - return ""; - } - WxCUser wxCUser = new WxCUser(); - wxCUser.setIds(userIds); - List list = wxCUserMapper.findList(wxCUser); + List list = wxCUserTagsService.findByTag(tenantId,tagids); + StringBuilder sb=new StringBuilder(); if(list.size()>0){ - for(WxCUser cuser:list){ - sb.append(cuser.getPhone()).append(","); + for(WxCUserBasicInfo cUserInfo:list){ + sb.append(cUserInfo.getPhone()).append(","); } return sb.toString(); } return ""; } - private String parseexcle(String excelpath) { + private String parseexcle(String tenantId, String excelpath) { return null; } diff --git a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml index c411621e0..f864bf760 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml @@ -59,17 +59,32 @@ select from wx_c_user_tags - - + - + select count(user_id) from wx_c_user_tags cut, wx_c_user cu + where cut.id = cu.id + and JSON_CONTAINS(tags,#{tagIds} ) + and cut.tenant_id = #{tenantId}; - + + + + +