| @@ -52,6 +52,9 @@ public class WxLegionActivityMerchantConfig extends TenantEntity { | |||
| @TableField(value = "merchant_id") | |||
| private Long merchantId; | |||
| @TableField(exist = false) | |||
| private List<Long> merchantIdList; | |||
| @TableField(exist = false) | |||
| private String merchantName; | |||
| @TableField(exist = false) | |||
| @@ -14,22 +14,25 @@ public class LegionActivityMerchantStatistics implements Serializable { | |||
| private Long merchantId; | |||
| @Excel(name="商铺名称",width = 20,orderNum = "1") | |||
| private String merchantName; | |||
| @Excel(name="商铺号",width = 20,orderNum = "2") | |||
| private Long legionId; | |||
| @Excel(name="所属军团",width = 20,orderNum = "2") | |||
| private String legionName; | |||
| @Excel(name="商铺号",width = 20,orderNum = "3") | |||
| private String shopNumber; | |||
| @Excel(name="售卡数量",width = 20,orderNum = "3") | |||
| @Excel(name="售卡数量",width = 20,orderNum = "4") | |||
| private Integer userCount; | |||
| @Excel(name="签单数量",width = 20,orderNum = "4") | |||
| @Excel(name="签单数量",width = 20,orderNum = "5") | |||
| private Integer orderCount; | |||
| // @Excel(name="带单数量",width = 20,orderNum = "5") | |||
| // @Excel(name="带单数量",width = 20,orderNum = "6") | |||
| private Integer sellOrderCount; | |||
| @Excel(name="外部军团带单",width = 20,orderNum = "6") | |||
| @Excel(name="外部军团带单",width = 20,orderNum = "7") | |||
| private Integer difLegion; | |||
| @Excel(name="内部军团不同联盟带单",width = 20,orderNum = "7") | |||
| @Excel(name="内部军团不同联盟带单",width = 20,orderNum = "8") | |||
| private Integer difUnion; | |||
| @Excel(name="内部军团相同联盟带单",width = 20,orderNum = "8") | |||
| @Excel(name="内部军团相同联盟带单",width = 20,orderNum = "9") | |||
| private Integer eqUnion; | |||
| @Excel(name="内部军团无联盟带单",width = 20,orderNum = "9") | |||
| @Excel(name="内部军团无联盟带单",width = 20,orderNum = "10") | |||
| private Integer notUnion; | |||
| @Excel(name="得分",width = 20,orderNum = "10") | |||
| @Excel(name="得分",width = 20,orderNum = "11") | |||
| private Double totalScore; | |||
| } | |||
| @@ -30,6 +30,8 @@ public interface WxLegionActivityUserMapper extends CommonMapper<WxLegionActivit | |||
| Integer selectOnlyCount(WxLegionActivityUser wxLegionActivityUser); | |||
| WxLegionActivityUser selectLimitOne(WxLegionActivityUser wxLegionActivityUser); | |||
| Integer selectCount(WxLegionActivityUser wxLegionActivityUser); | |||
| } | |||
| @@ -13,4 +13,6 @@ import java.util.Map; | |||
| public interface WxLegionActivityMerchantConfigService { | |||
| Map<Long, Integer> findMerchantCount(WxLegionActivityMerchantConfig merchantConfigQ); | |||
| Map<Long, Long> findMerchantLegionMap(WxLegionActivityMerchantConfig merchantConfigQ); | |||
| } | |||
| @@ -35,7 +35,7 @@ public interface WxLegionActivityOrderService { | |||
| Map<String, Object> getActivityData(WxLegionActivityOrder wxLegionActivityOrder); | |||
| Map<String, Object> handleActivityData(WxLegionActivity wxLegionActivity, Long legionId); | |||
| Map<String, Object> handleActivityData(WxLegionActivity wxLegionActivity, WxLegionActivityOrder wxLegionActivityOrder); | |||
| List<LegionActivityMerchantStatistics> getActivityMerchantData(WxLegionActivityOrder wxLegionActivityOrder); | |||
| @@ -5,6 +5,7 @@ import com.iformall.domain.po.WxLegionActivityMerchantConfig; | |||
| import com.iformall.domain.vo.LegionActivityCount; | |||
| import com.iformall.service.WxLegionActivityMerchantConfigService; | |||
| import com.iformall.mapper.WxLegionActivityMerchantConfigMapper; | |||
| import org.apache.commons.lang3.ObjectUtils; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| @@ -32,6 +33,15 @@ public class WxLegionActivityMerchantConfigServiceImpl implements WxLegionActivi | |||
| } | |||
| return activityCountList.stream().collect(Collectors.toMap(LegionActivityCount::getActivityId, LegionActivityCount::getCount)); | |||
| } | |||
| @Override | |||
| public Map<Long, Long> findMerchantLegionMap(WxLegionActivityMerchantConfig merchantConfigQ) { | |||
| List<WxLegionActivityMerchantConfig> list = wxLegionActivityMerchantConfigMapper.findList(merchantConfigQ); | |||
| if (list == null || list.isEmpty()){ | |||
| return Collections.emptyMap(); | |||
| } | |||
| return list.stream().collect(Collectors.toMap(WxLegionActivityMerchantConfig::getMerchantId, WxLegionActivityMerchantConfig::getLegionId)); | |||
| } | |||
| } | |||
| @@ -54,6 +54,9 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| @Autowired | |||
| private WxLegionActivityMerchantConfigMapper wxLegionActivityMerchantConfigMapper; | |||
| @Autowired | |||
| private WxLegionActivityMerchantConfigService wxLegionActivityMerchantConfigService; | |||
| @Autowired | |||
| private WxLegionActivityOfflineConfigService wxLegionActivityOfflineConfigService; | |||
| @@ -386,27 +389,31 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| if(activity == null){ | |||
| throw new MallinkException(Result.ERROR,"未查询到活动"); | |||
| } | |||
| return handleActivityData(activity,wxLegionActivityOrder.getLegionId()); | |||
| return handleActivityData(activity,wxLegionActivityOrder); | |||
| } | |||
| @Override | |||
| public Map<String, Object> handleActivityData(WxLegionActivity activity, Long legionId) { | |||
| public Map<String, Object> handleActivityData(WxLegionActivity activity, WxLegionActivityOrder wxLegionActivityOrder) { | |||
| Map<String, Object> result = new HashMap<>(); | |||
| WxLegionActivityUser userQ = new WxLegionActivityUser(); | |||
| userQ.updateTenantInfo(activity); | |||
| userQ.setActivityId(activity.getId()); | |||
| userQ.setLegionId(legionId); | |||
| userQ.setLegionId(wxLegionActivityOrder.getLegionId()); | |||
| userQ.setStatus(EnumLegionActivityUserStatus.VALID.getCode()); | |||
| Integer userCount = wxLegionActivityUserMapper.selectCount(new QueryWrapper<>(userQ)); | |||
| userQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||
| userQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||
| Integer userCount = wxLegionActivityUserMapper.selectCount(userQ); | |||
| result.put("userCount",userCount); | |||
| WxLegionActivityOrder orderQ = new WxLegionActivityOrder(); | |||
| orderQ.updateTenantInfo(activity); | |||
| orderQ.setActivityId(activity.getId()); | |||
| orderQ.setCusLegionId(legionId); | |||
| orderQ.setCusLegionId(wxLegionActivityOrder.getLegionId()); | |||
| orderQ.setAuditStatus(EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode()); | |||
| orderQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||
| orderQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||
| List<LegionActivityOrderTypeStatistics> orderTypeStatistics = wxLegionActivityOrderMapper.orderTypeStatistics(orderQ); | |||
| Integer sign_order = 0,dif_legion = 0,dif_union = 0,eq_union = 0,not_union = 0; | |||
| for(LegionActivityOrderTypeStatistics statistics : orderTypeStatistics){ | |||
| @@ -453,6 +460,8 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| userQ.updateTenantInfo(activity); | |||
| userQ.setActivityId(activity.getId()); | |||
| userQ.setStatus(EnumLegionActivityUserStatus.VALID.getCode()); | |||
| userQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||
| userQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||
| List<LegionActivityUserStatistics> merchantCountStatistics = wxLegionActivityUserMapper.merchantCountStatistics(userQ); | |||
| Map<Long, Integer> merchantCountStatisticsMap = new HashMap<>(); | |||
| if(merchantCountStatistics != null && !merchantCountStatistics.isEmpty()){ | |||
| @@ -465,6 +474,8 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| orderQ.updateTenantInfo(activity); | |||
| orderQ.setActivityId(activity.getId()); | |||
| orderQ.setAuditStatus(EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode()); | |||
| orderQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||
| orderQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||
| List<LegionActivityOrderTypeStatistics> merchantStatistics = wxLegionActivityOrderMapper.merchantStatistics(orderQ); | |||
| Map<Long, List<LegionActivityOrderTypeStatistics>> merchantStatisticsMap = new HashMap<>(); | |||
| if(merchantStatistics != null && !merchantStatistics.isEmpty()){ | |||
| @@ -483,12 +494,28 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| Map<Long, String> idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); | |||
| Map<Long, String> merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(activity, merchantIds, EnumYesOrNo.NO.getCode()); | |||
| WxLegionActivityMerchantConfig merchantConfigQ = new WxLegionActivityMerchantConfig(); | |||
| merchantConfigQ.updateTenantInfo(activity); | |||
| merchantConfigQ.setActivityId(activity.getId()); | |||
| merchantConfigQ.setMerchantIdList(merchantIds); | |||
| Map<Long, Long> merchantLegionMap = wxLegionActivityMerchantConfigService.findMerchantLegionMap(merchantConfigQ); | |||
| WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); | |||
| legionConfigQ.updateTenantInfo(wxLegionActivityOrder); | |||
| legionConfigQ.setActivityId(wxLegionActivityOrder.getActivityId()); | |||
| Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); | |||
| List<LegionActivityMerchantStatistics> merchantStatisticsList = new ArrayList<>(); | |||
| for (Long merchantId : idAndNamesMap.keySet()) { | |||
| LegionActivityMerchantStatistics merchantS = new LegionActivityMerchantStatistics(); | |||
| merchantS.setMerchantId(merchantId); | |||
| merchantS.setMerchantName(idAndNamesMap.get(merchantId)); | |||
| merchantS.setShopNumber(merchantShopNumberMap.get(merchantId)); | |||
| merchantS.setLegionId(merchantLegionMap.get(merchantId)==null?0L:merchantLegionMap.get(merchantId)); | |||
| merchantS.setLegionName(legionConfigMap.get(merchantS.getLegionId())); | |||
| if(StringUtils.isBlank(merchantS.getLegionName())){ | |||
| merchantS.setLegionName("无联盟"); | |||
| } | |||
| Integer userCount = merchantCountStatisticsMap.get(merchantId)==null?0:merchantCountStatisticsMap.get(merchantId); | |||
| merchantS.setUserCount(userCount); | |||
| Integer sign_order = 0,dif_legion = 0,dif_union = 0,eq_union = 0,not_union = 0; | |||
| @@ -128,7 +128,7 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{ | |||
| activity.setMerchantCount(merchantCountMap.get(activity.getId())==null?0:merchantCountMap.get(activity.getId())); | |||
| //处理数量 | |||
| if(record.isNeedCount()){ | |||
| activity.setActivityData(wxLegionActivityOrderService.handleActivityData(activity,null)); | |||
| activity.setActivityData(wxLegionActivityOrderService.handleActivityData(activity,new WxLegionActivityOrder())); | |||
| } | |||
| //处理商户所属 | |||
| if(record.getMerchantId() != null){ | |||
| @@ -49,6 +49,13 @@ | |||
| and `union_id` = #{unionId} | |||
| </if> | |||
| <if test=" null != merchantIdList "> | |||
| and merchant_id in | |||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | |||
| #{midItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| @@ -243,6 +243,13 @@ | |||
| <if test=" null != cusMerchantId "> | |||
| and `cus_merchant_id` = #{cusMerchantId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != auditStatus "> | |||
| and `audit_status` = #{auditStatus} | |||
| </if> | |||
| @@ -271,6 +278,13 @@ | |||
| <if test=" null != cusMerchantId "> | |||
| and `cus_merchant_id` = #{cusMerchantId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != auditStatus "> | |||
| and `audit_status` = #{auditStatus} | |||
| </if> | |||
| @@ -305,6 +319,13 @@ | |||
| <if test=" null != activityId "> | |||
| and o.`activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and o.`create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and o.`create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != auditStatus "> | |||
| and o.`audit_status` = #{auditStatus} | |||
| </if> | |||
| @@ -196,5 +196,9 @@ | |||
| <include refid="dynamicWhereConditions" /> | |||
| limit 1 | |||
| </select> | |||
| <select id="selectCount" parameterType="com.iformall.domain.po.WxLegionActivityUser" resultType="Integer"> | |||
| select count(1) from wx_legion_activity_user | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| </mapper> | |||