请求波司登获取数据

master
yechenhao 6 years ago
parent 9729b6fe09
commit 9e14d1c953

@ -0,0 +1,18 @@
package com.kiisoo.ic.store.bean;
import lombok.Data;
import java.util.List;
@Data
public class BsdShareCodeListResponse {
private Boolean success;
private String resultCode;
private String errorMessage;
private List<QyWechatUserDTO> data;
}

@ -0,0 +1,12 @@
package com.kiisoo.ic.store.bean;
import lombok.Data;
@Data
public class BsdShareCodeResponse {
private Boolean success;
private String resultCode;
private String errorMessage;
private String data;
}

@ -0,0 +1,11 @@
package com.kiisoo.ic.store.bean;
import lombok.Data;
@Data
public class QyWechatUserDTO{
private String userId;
private String qRcodeUrl;
private String type;
}

@ -79,6 +79,20 @@ public class StoreEmployeeController extends BaseController {
} }
} }
/**
*
* @param response
*/
@RequestMapping(value = "download/store/code/bsd",method = RequestMethod.POST)
@ResponseBody
public void downloadCodeBSD(HttpServletResponse response) {
try {
storeEmployeeService.downloadStoreUserCodeFromBSD(response);
} catch (Exception e) {
log.error("批量下载店铺二维码失败", e);
}
}
/** /**
* *
* @param response * @param response
@ -92,4 +106,18 @@ public class StoreEmployeeController extends BaseController {
log.error("批量下载店铺二维码失败", e); log.error("批量下载店铺二维码失败", e);
} }
} }
/**
*
* @param response
*/
@RequestMapping(value = "download/store/seller/code/bsd",method = RequestMethod.POST)
@ResponseBody
public void downloadSellerCodeBSD(HttpServletResponse response) {
try {
storeEmployeeService.downloadStoreStaffCodeFromBSD(response);
} catch (Exception e) {
log.error("批量下载店铺二维码失败", e);
}
}
} }

@ -41,4 +41,6 @@ public interface PoiStoreDOMapper extends BaseMapper<PoiStore> {
String selectStoreQrCode(@Param("shopId")Long shopId); String selectStoreQrCode(@Param("shopId")Long shopId);
List<PoiStore> selectShopByNameOrCode (@Param("name") String name); List<PoiStore> selectShopByNameOrCode (@Param("name") String name);
List<PoiStore> selectShopByCustomerIds(@Param("customerIds")List<Long> customerIds);
} }

@ -1,10 +1,12 @@
package com.kiisoo.ic.store.service; package com.kiisoo.ic.store.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.kiisoo.aegis.common.faces.util.HttpUtil;
import com.kiisoo.ic.common.utils.ExcelUtils; import com.kiisoo.ic.common.utils.ExcelUtils;
import com.kiisoo.ic.common.utils.MD5FileUtil;
import com.kiisoo.ic.customer.entity.OpSellerCustomerRelation; import com.kiisoo.ic.customer.entity.OpSellerCustomerRelation;
import com.kiisoo.ic.customer.mapper.OpSellerCustomerRelationDOMapper; import com.kiisoo.ic.customer.mapper.OpSellerCustomerRelationDOMapper;
import com.kiisoo.ic.department.entity.DepartmentDO; import com.kiisoo.ic.department.entity.DepartmentDO;
@ -12,17 +14,15 @@ import com.kiisoo.ic.department.mapper.PrivilageDepartmentDOMapper;
import com.kiisoo.ic.domain.service.PrivilageDomainService; import com.kiisoo.ic.domain.service.PrivilageDomainService;
import com.kiisoo.ic.employee.entity.EmployeeDO; import com.kiisoo.ic.employee.entity.EmployeeDO;
import com.kiisoo.ic.employee.entity.ImportErrorDTO; import com.kiisoo.ic.employee.entity.ImportErrorDTO;
import com.kiisoo.ic.employee.entity.PrivilageCpUserDO;
import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper;
import com.kiisoo.ic.employee.service.EmployeeService; import com.kiisoo.ic.employee.service.EmployeeService;
import com.kiisoo.ic.generalize.entity.PrivilageOrganizational; import com.kiisoo.ic.generalize.entity.PrivilageOrganizational;
import com.kiisoo.ic.generalize.entity.PrivilageOrganizationalMember;
import com.kiisoo.ic.generalize.service.RetailCompanyService; import com.kiisoo.ic.generalize.service.RetailCompanyService;
import com.kiisoo.ic.generalize.mapper.RetailCompanyMapper; import com.kiisoo.ic.generalize.mapper.RetailCompanyMapper;
import com.kiisoo.ic.store.bean.BsdShareCodeResponse;
import com.kiisoo.ic.store.bean.PoiStoreStaffDTO; import com.kiisoo.ic.store.bean.PoiStoreStaffDTO;
import com.kiisoo.ic.store.entity.PoiStore; import com.kiisoo.ic.store.entity.PoiStore;
import com.kiisoo.ic.store.entity.PoiStoreStaff; import com.kiisoo.ic.store.entity.PoiStoreStaff;
import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO;
import com.kiisoo.ic.store.entity.StoreUserDTO; import com.kiisoo.ic.store.entity.StoreUserDTO;
import com.kiisoo.ic.store.mapper.PoiStoreDOMapper; import com.kiisoo.ic.store.mapper.PoiStoreDOMapper;
import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper;
@ -35,7 +35,6 @@ import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -46,11 +45,10 @@ import javax.servlet.http.HttpServletResponse;
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.*; import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import static com.kiisoo.ic.employee.constant.Constants.ADD_CP_CODE_BINDED; import static com.kiisoo.ic.employee.constant.Constants.ADD_CP_CODE_BINDED;
import static com.kiisoo.ic.store.constant.Constants.*; import static com.kiisoo.ic.store.constant.Constants.*;
@ -229,6 +227,98 @@ public class StoreEmployeeService {
zipFile.delete(); zipFile.delete();
} }
} }
/**
*
* @param response
*/
public void downloadStoreUserCodeFromBSD(HttpServletResponse response) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//查询所有公司
QueryWrapper<PrivilageOrganizational> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status",1).eq("type",1).eq("level",2);
List<PrivilageOrganizational> privilageOrganizationals = retailCompanyMapper.selectList(queryWrapper);
if (CollectionUtils.isNotEmpty(privilageOrganizationals)){
//根文件夹用于存放公司
String fileUrl = "门店码-"+UUID.randomUUID().toString().replace("-", "");
File file = new File(fileUrl);
file.mkdir();
// 生成的ZIP文件名
String strZipName = "store_qrCode_"+ fileUrl +".zip";
FileOutputStream out = new FileOutputStream(new File(strZipName));
//遍历零售公司
for (PrivilageOrganizational privilageOrganizational:privilageOrganizationals) {
if (privilageOrganizational == null || privilageOrganizational.getId() == null){
continue;
}
//创建零售公司文件夹
File complayFile = new File(file.getPath()+"/"+privilageOrganizational.getName());
complayFile.mkdir();
//查询客户
QueryWrapper<PrivilageOrganizational> customerWrap = new QueryWrapper<>();
customerWrap.eq("status",1).eq("type",1).eq("level",3).eq("parent_id",privilageOrganizational.getId());
List<PrivilageOrganizational> customerList = retailCompanyMapper.selectList(customerWrap);
if (CollectionUtils.isNotEmpty(customerList)){
List<Long> customerIds = customerList.stream().map(i -> i.getId()).collect(Collectors.toList());
//查询店铺
List<PoiStore> poiStores = poiStoreDOMapper.selectShopByCustomerIds(customerIds);
if (CollectionUtils.isNotEmpty(poiStores)){
//遍历店铺查询门店码url
for (PoiStore poiStore:poiStores){
String cpUserId = privilageCpUserStoreDOMapper.selectCpUserIdByStoreId(poiStore.getId());
if (StringUtils.isBlank(cpUserId)){
continue;
}
Map<String,Object> params = new HashMap<>();
params.put("userId",cpUserId);
params.put("type",0);
params.put("storeNo",poiStore.getCode());
String get = HttpUtil.get("http://vtest.bsd.cn/BSD_WXAPP/qyWechat/getShareQRcode?token=BOSIDENG" + MD5FileUtil.getMD5String(sdf.format(new Date())), params);
JSONObject saveAccountInputJSON = JSONObject.parseObject(get);
BsdShareCodeResponse bsdResponse = saveAccountInputJSON.toJavaObject(BsdShareCodeResponse.class);
String url = bsdResponse.getData();
if (StringUtils.isBlank(url)){
continue;
}
//下载图片
BufferedInputStream in = new BufferedInputStream(employeeService.getInputStream(url));
//字节流转图片对象
Image bi = ImageIO.read(in);
//构建图片流
BufferedImage tag = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
//绘制改变尺寸后的图
tag.getGraphics().drawImage(bi, 0, 0, 300, 300, null);
//输出流
BufferedOutputStream image = new BufferedOutputStream(new FileOutputStream(complayFile.getPath() +"/" +poiStore.getCode() + ".png"));
ImageIO.write(tag, "PNG", image);
in.close();
image.close();
}
}
}
}
//将根文件转换为zip文件
ZipUtils.toZip(file.getPath(),out,true);
//将文件输入到response
ServletOutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];
File zipFile = new File(strZipName);
FileInputStream inStream = new FileInputStream(zipFile);
int lenNew;
while ((lenNew = inStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, lenNew);
}
//删除文件,清理空间
file.delete();
zipFile.delete();
}
}
/** /**
* *
* @param response * @param response
@ -311,6 +401,110 @@ public class StoreEmployeeService {
zipFile.delete(); zipFile.delete();
} }
} }
/**
*
* @param response
*/
public void downloadStoreStaffCodeFromBSD(HttpServletResponse response) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//查询所有公司
List<PrivilageOrganizational> privilageOrganizationals = retailCompanyMapper.selectList(null);
if (CollectionUtils.isNotEmpty(privilageOrganizationals)){
//根文件夹用于存放公司
String fileUrl = "导购码-"+UUID.randomUUID().toString().replace("-", "");
File file = new File(fileUrl);
file.mkdir();
// 生成的ZIP文件名
String strZipName = "store_qrCode_"+ fileUrl +".zip";
FileOutputStream out = new FileOutputStream(new File(strZipName));
//遍历零售公司
for (PrivilageOrganizational privilageOrganizational:privilageOrganizationals) {
if (privilageOrganizational == null || privilageOrganizational.getId() == null){
continue;
}
//创建零售公司文件夹
File complayFile = new File(file.getPath()+"/"+privilageOrganizational.getName());
complayFile.mkdir();
QueryWrapper<PrivilageOrganizational> customerWrap = new QueryWrapper<>();
customerWrap.eq("status",1).eq("type",1).eq("level",3).eq("parent_id",privilageOrganizational.getId());
List<PrivilageOrganizational> customerList = retailCompanyMapper.selectList(customerWrap);
if (CollectionUtils.isNotEmpty(customerList)) {
List<Long> customerIds = customerList.stream().map(i -> i.getId()).collect(Collectors.toList());
//查询店铺
List<PoiStore> poiStores = poiStoreDOMapper.selectShopByCustomerIds(customerIds);
if (CollectionUtils.isNotEmpty(poiStores)){
//遍历店铺查询门店码url
for (PoiStore poiStore:poiStores){
//创建零售公司文件夹
File storeFile = new File(complayFile.getPath()+"/"+poiStore.getName());
storeFile.mkdir();
QueryWrapper<PoiStoreStaff> staffQr = new QueryWrapper();
staffQr.eq(DATABASE_STORE_ID_KEY,poiStore.getId());
staffQr.eq(DATABASE_TYPE_KEY,TYPE_STAFF_SELLER);
List<PoiStoreStaff> poiStoreStaffs = poiStoreStaffDOMapper.selectList(staffQr);
if (CollectionUtils.isNotEmpty(poiStoreStaffs)){
for (PoiStoreStaff poiStoreStaff:poiStoreStaffs){
String cpUserId = privilageCpUserStoreDOMapper.selectCpUserIdByStoreId(poiStore.getId());
if (StringUtils.isBlank(cpUserId)){
continue;
}
Map<String,Object> params = new HashMap<>();
params.put("userId",cpUserId);
params.put("type",1);
params.put("state",poiStoreStaff.getStaffCode());
params.put("storeNo",poiStore.getCode());
String get = HttpUtil.get("http://vtest.bsd.cn/BSD_WXAPP/qyWechat/getShareQRcode?token=BOSIDENG" + MD5FileUtil.getMD5String(sdf.format(new Date())), params);
JSONObject saveAccountInputJSON = JSONObject.parseObject(get);
BsdShareCodeResponse bsdResponse = saveAccountInputJSON.toJavaObject(BsdShareCodeResponse.class);
String url = bsdResponse.getData();
if (StringUtils.isBlank(url)){
continue;
}
//下载图片
BufferedInputStream in = new BufferedInputStream(employeeService.getInputStream(url));
//字节流转图片对象
Image bi = ImageIO.read(in);
//构建图片流
BufferedImage tag = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
//绘制改变尺寸后的图
tag.getGraphics().drawImage(bi, 0, 0, 300, 300, null);
//输出流
BufferedOutputStream image = new BufferedOutputStream(new FileOutputStream(storeFile.getPath() +"/" +poiStoreStaff.getStaffCode() + ".png"));
ImageIO.write(tag, "PNG", image);
in.close();
image.close();
}
}
}
}
}
}
//将根文件转换为zip文件
ZipUtils.toZip(file.getPath(),out,true);
//将文件输入到response
ServletOutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];
File zipFile = new File(strZipName);
FileInputStream inStream = new FileInputStream(zipFile);
int lenNew;
while ((lenNew = inStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, lenNew);
}
//删除文件,清理空间
file.delete();
zipFile.delete();
}
}
/** /**
* excel * excel

@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.kiisoo.aegis.common.faces.util.HttpUtil;
import com.kiisoo.ic.common.utils.MD5FileUtil;
import com.kiisoo.ic.config.WxCpConfiguration; import com.kiisoo.ic.config.WxCpConfiguration;
import com.kiisoo.ic.domain.service.PrivilageDomainService; import com.kiisoo.ic.domain.service.PrivilageDomainService;
import com.kiisoo.ic.store.constant.Constants; import com.kiisoo.ic.store.constant.Constants;
@ -22,10 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Comparator; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -243,7 +242,7 @@ public class StorePromotionDataService {
Date endDate = sdf.parse("2020-04-12"); Date endDate = sdf.parse("2020-04-12");
wxCusInfoReqDO.setStart_time(startDate.getTime()/1000); wxCusInfoReqDO.setStart_time(startDate.getTime()/1000);
wxCusInfoReqDO.setEnd_time(endDate.getTime()/1000); wxCusInfoReqDO.setEnd_time(endDate.getTime()/1000);
WxCusInfoRespDO wxCusInfoRespDO = getWxCusInfo(wxCusInfoReqDO); WxCusInfoRespDO wxCusInfoRespDO = getWxCusInfoBSD(wxCusInfoReqDO);
if (wxCusInfoRespDO.getNegative_feedback_cnt() == Constants.CONTACT_COUNT_ZERO && if (wxCusInfoRespDO.getNegative_feedback_cnt() == Constants.CONTACT_COUNT_ZERO &&
wxCusInfoRespDO.getNew_contact_cnt() == Constants.CONTACT_COUNT_ZERO) { wxCusInfoRespDO.getNew_contact_cnt() == Constants.CONTACT_COUNT_ZERO) {
return; return;
@ -257,6 +256,8 @@ public class StorePromotionDataService {
} }
} catch (WxErrorException | ParseException e) { } catch (WxErrorException | ParseException e) {
log.error("请求企业微信api获取客户统计数据或日期转换出错", e); log.error("请求企业微信api获取客户统计数据或日期转换出错", e);
} catch (Exception e) {
e.printStackTrace();
} }
}); });
} }
@ -278,6 +279,26 @@ public class StorePromotionDataService {
return JSONObject.parseObject(behavior_data[0], WxCusInfoRespDO.class); return JSONObject.parseObject(behavior_data[0], WxCusInfoRespDO.class);
} }
/**
*
*
* @param wxCusInfoReqDO
* @return
* @throws WxErrorException
*/
public WxCusInfoRespDO getWxCusInfoBSD(WxCusInfoReqDO wxCusInfoReqDO) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Map<String,Object> params = new HashMap<>();
params.put("start_time",wxCusInfoReqDO.getStart_time());
params.put("end_time",wxCusInfoReqDO.getEnd_time());
params.put("userid",wxCusInfoReqDO.getUserid());
String result = HttpUtil.get("http://vtest.bsd.cn/BSD_WXAPP/qyWechat/getUserBehaviorData?token==BOSIDENG" + MD5FileUtil.getMD5String(sdf.format(new Date())), params);
JSONObject parseObject = JSON.parseObject(result);
System.out.println(parseObject);
String[] behavior_data = JSONObject.parseObject(parseObject.getString("behavior_data"), String[].class);
return JSONObject.parseObject(behavior_data[0], WxCusInfoRespDO.class);
}
/** /**
* 广 * 广
* @param userId * @param userId

@ -41,6 +41,26 @@
and t1.org_id = #{orgId} and t1.org_id = #{orgId}
</if> </if>
</select> </select>
<select id="selectShopByCustomerIds" resultType="com.kiisoo.ic.store.entity.PoiStore">
select t3.id,t3.name
from privilage_organizational_domain t1,
privilage_domain_entity t2,
poi_store t3
where t1.domain_id = t2.domain_id
and t2.entity_id = t3.id
and t2.type = 3
<choose>
<when test="customerIds != null and customerIds.size > 0">
t1.org_id in
<foreach collection="customerIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</when>
<otherwise>
1 = 0
</otherwise>
</choose>
</select>
<select id="selectSellerByShop" resultType="com.kiisoo.ic.system.entity.PrivilageUserDO"> <select id="selectSellerByShop" resultType="com.kiisoo.ic.system.entity.PrivilageUserDO">
select t2.id ,t2.name select t2.id ,t2.name
from poi_store_staff t1, from poi_store_staff t1,

Loading…
Cancel
Save