Browse Source

[A端][新增]:获取用户来源渠道接口

release_toaliyun_real
hupeng 7 years ago
parent
commit
49d64b427e
6 changed files with 88 additions and 1 deletions
  1. +55
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java
  2. +9
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxUserChannel.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java
  4. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxCUserService.java
  5. +4
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java
  6. +18
    -0
      mallinkService/src/main/resources/mapper/WxCUserMapper.xml

+ 55
- 0
mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java View File

@@ -448,6 +448,61 @@ public class WxUserStructureController extends BaseController {
return new ResultData(page);
}

@ApiOperation("获取用户所有渠道")
@GetMapping("/findUserStructureByChannel")
public ResultData findUserStructureByChannel(@ModelAttribute WxCUser wxCUser) {

List<WxUserChannel> channelStructureList = new ArrayList<>();
List<WxUserChannel> senceStructureList = new ArrayList<>();

List<WxUserChannel> channels = wxUserChannelService.findDistinctChannel();
for (WxUserChannel w : channels) {
WxUserChannel c = new WxUserChannel();
c.setChannelName(w.getChannelName());
PageInfo<WxUserChannel> page = wxUserChannelService.listAsPage(c, 1, 1000);
if (page.getSize() > 0) {
List<String> sceneList = new ArrayList<>();
for (WxUserChannel uc : page.getList()) {
List<String> scene = new ArrayList<>();
scene.add(uc.getSceneAddress());
wxCUser.setSceneList(scene);
WxUserChannel senceStructure = new WxUserChannel();
senceStructure.setDescription(uc.getDescription());
senceStructure.setCount(wxCUserService.countByChannel(wxCUser));
senceStructureList.add(senceStructure);
sceneList.add(uc.getSceneAddress());
}

wxCUser.setSceneList(sceneList);
WxUserChannel channelStructure = new WxUserChannel();
channelStructure.setChannelName(w.getChannelName());
channelStructure.setCount(wxCUserService.countByChannel(wxCUser));
channelStructureList.add(channelStructure);
}
}

HashMap result = new HashMap();
Collections.sort(senceStructureList, new Comparator<WxUserChannel>() {
@Override
public int compare(WxUserChannel c1, WxUserChannel c2) {
long diff = c1.getCount() - c2.getCount();
if (diff > 0) {
return -1;
}
else if (diff < 0) {
return 1;
}
return 0;
}
});

result.put("channelList",channelStructureList);
result.put("senceList",senceStructureList.subList(0,10));
return new ResultData(result);
}



@ApiOperation("获取用户所有渠道")
@GetMapping("/findAllUserChannel")
public ResultData findAllUserChannel() {


+ 9
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxUserChannel.java View File

@@ -68,7 +68,16 @@ public class WxUserChannel implements Serializable {
description = _description;
}

@Transient
protected long count;

public long getCount() {
return count;
}

public void setCount(long count) {
this.count = count;
}

public static enum Field
{


+ 1
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java View File

@@ -21,4 +21,5 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> {

List<WxCUser> listByChannel(WxCUser wxCUser);

long countByChannel(WxCUser wxCUser);
}

+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxCUserService.java View File

@@ -74,7 +74,7 @@ public interface WxCUserService {
*/
PageInfo<WxCUser> listByChannel(WxCUser user, Integer pageIndex, Integer pageSize);

long countByChannel(WxCUser user);
/**
* 计算当前用户成长值
*/


+ 4
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java View File

@@ -98,6 +98,10 @@ public class WxCUserServiceImpl implements WxCUserService {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.listByChannel(user));
}

@Override
public long countByChannel(WxCUser user) {
return wxCUserMapper.countByChannel(user);
}

@Override
public void scoreCalculate(WxCUser user, boolean isNew) {


+ 18
- 0
mallinkService/src/main/resources/mapper/WxCUserMapper.xml View File

@@ -218,5 +218,23 @@
order by create_date desc
</select>

<select id="countByChannel" resultType="java.lang.Long" >
select count(id) from wx_c_user where 1=1
<if test="null != tenantId">
and tenant_id =#{tenantId}
</if>
<if test=" null != startDate ">
and create_date &gt;= #{startDate}
</if>
<if test=" null != endDate">
and create_date &lt; #{endDate}
</if>
<if test=" sceneList!= null ">
and scene_address in
<foreach collection="sceneList" index="index" item="scene" open="(" separator="," close=")">
#{scene}
</foreach>
</if>
</select>

</mapper>

Loading…
Cancel
Save