From bf6d5614ac028fe8e3d2ac99fc7d2096cefd41ff Mon Sep 17 00:00:00 2001 From: LegnaYet <1023868505@qq.com> Date: Thu, 9 Apr 2020 19:55:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=A8=E5=BA=97=E5=8F=B7=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 + .../controller/EmployeeController.java | 15 ++ .../ic/employee/service/EmployeeService.java | 141 ++++++++++++++---- .../kiisoo/ic/store/constant/Constants.java | 16 ++ .../controller/StoreEmployeeController.java | 43 ++++++ .../kiisoo/ic/store/entity/StoreUserDTO.java | 33 ++++ .../store/service/StoreEmployeeService.java | 85 +++++++++++ 7 files changed, 314 insertions(+), 26 deletions(-) create mode 100644 src/main/java/com/kiisoo/ic/store/constant/Constants.java create mode 100644 src/main/java/com/kiisoo/ic/store/controller/StoreEmployeeController.java create mode 100644 src/main/java/com/kiisoo/ic/store/entity/StoreUserDTO.java create mode 100644 src/main/java/com/kiisoo/ic/store/service/StoreEmployeeService.java diff --git a/pom.xml b/pom.xml index 5c2de88..a629c66 100644 --- a/pom.xml +++ b/pom.xml @@ -178,6 +178,13 @@ 3.7.0 + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.2.5 + + com.belerweb diff --git a/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java b/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java index 8f77176..48dd763 100644 --- a/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java +++ b/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -44,6 +45,20 @@ public class EmployeeController extends BaseController { return fail(); } } + /** + * 新增成员 + * @param employee 成员实体 + * @return + * @throws WxErrorException + */ + @RequestMapping(value = "qrCode",method = RequestMethod.GET) + public void downLoadQrCode(HttpServletResponse response){ + try { + employeeService.downLoadQrCode(response); + }catch (Exception e){ + log.error("添加用户失败",e); + } + } /** * 新增成员 diff --git a/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java b/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java index 830e875..3f176bc 100644 --- a/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java +++ b/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java @@ -1,5 +1,7 @@ package com.kiisoo.ic.employee.service; +import java.io.*; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.kiisoo.ic.department.entity.PrivilageCpUserDepartmentDO; import com.kiisoo.ic.department.mapper.PrivilageCpUserDepartmentDOMapper; @@ -19,9 +21,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import static com.kiisoo.ic.employee.constant.Constants.*; @@ -51,19 +60,22 @@ public class EmployeeService { /** * 查询成员 + * * @param employee 成员实体 * @return * @throws WxErrorException */ @Transactional(rollbackFor = Exception.class) - public List listUser() { + public List listUser() { QueryWrapper params = new QueryWrapper<>(); List privilageCpUserDOS = privilageCpUserDOMapper.selectList(params); return privilageCpUserDOS; } + /** * 新增成员 + * * @param employee 成员实体 * @return * @throws WxErrorException @@ -72,12 +84,12 @@ public class EmployeeService { public String addUser(EmployeeDO employee) throws Exception { //排重---根据企业微信账号查询是否存在用户 QueryWrapper cuUserIdParams = new QueryWrapper<>(); - cuUserIdParams.eq(DATABASE_CP_USER_ID_KEY,employee.getUserId()); + cuUserIdParams.eq(DATABASE_CP_USER_ID_KEY, employee.getUserId()); List cuUserIdUser = privilageCpUserDOMapper.selectList(cuUserIdParams); //创建实体对象 PrivilageCpUserDO privilageCpUserDO = new PrivilageCpUserDO(); - BeanUtils.copyProperties(employee,privilageCpUserDO); + BeanUtils.copyProperties(employee, privilageCpUserDO); privilageCpUserDO.setCpUserId(employee.getUserId()); //创建实体和店铺的关系对象 @@ -85,10 +97,10 @@ public class EmployeeService { cpUserStoreDO.setStoreId(employee.getStoreId()); //是否存在账号 - if (CollectionUtils.isEmpty(cuUserIdUser)){ + if (CollectionUtils.isEmpty(cuUserIdUser)) { //不存在则创建账号并绑定与部门的关系 int insert = privilageCpUserDOMapper.insert(privilageCpUserDO); - if (insert == 0){ + if (insert == 0) { throw new Exception("创建成员失败"); } @@ -96,8 +108,8 @@ public class EmployeeService { Long[] departIds = employee.getDepartIds(); Integer[] orders = employee.getOrders(); Integer[] isLeaderInDept = employee.getIsLeaderInDept(); - for (int i = 0;i cpStoreRationParams = new QueryWrapper<>(); - cpStoreRationParams.eq(DATABASE_CP_USER_ID_KEY,cpUserId); + cpStoreRationParams.eq(DATABASE_CP_USER_ID_KEY, cpUserId); PrivilageCpUserStoreDO privilageCpUserStoreDO = privilageCpUserStoreDOMapper.selectOne(cpStoreRationParams); - if (privilageCpUserStoreDO != null){ + if (privilageCpUserStoreDO != null) { //绑定过店铺不做任何操作,返回已绑定码和绑定的店铺名,用&分割 PoiStore poiStore = poiStoreDOMapper.selectById(privilageCpUserStoreDO.getStoreId()); return ADD_CP_CODE_BINDED + "&" + poiStore.getName(); @@ -128,6 +140,7 @@ public class EmployeeService { /** * 同步成员 + * * @param employee 成员实体 * @return * @throws WxErrorException @@ -135,34 +148,34 @@ public class EmployeeService { @Transactional(rollbackFor = Exception.class) public void syncUser() throws Exception { List wxCpUsers = qwMailListManageService.syncUser(); - if (CollectionUtils.isNotEmpty(wxCpUsers)){ + if (CollectionUtils.isNotEmpty(wxCpUsers)) { wxCpUsers.forEach(wxCpUser -> { QueryWrapper cuUserIdParams = new QueryWrapper<>(); - cuUserIdParams.eq(DATABASE_CP_USER_ID_KEY,wxCpUser.getUserId()); + cuUserIdParams.eq(DATABASE_CP_USER_ID_KEY, wxCpUser.getUserId()); List cuUserIdUser = privilageCpUserDOMapper.selectList(cuUserIdParams); PrivilageCpUserDO privilageCpUserDO = new PrivilageCpUserDO(); - BeanUtils.copyProperties(wxCpUser,privilageCpUserDO); + BeanUtils.copyProperties(wxCpUser, privilageCpUserDO); privilageCpUserDO.setCpUserId(wxCpUser.getUserId()); - if (CollectionUtils.isEmpty(cuUserIdUser)){ + if (CollectionUtils.isEmpty(cuUserIdUser)) { //添加用户 int insert = privilageCpUserDOMapper.insert(privilageCpUserDO); - }else{ + } else { privilageCpUserDO.setId(cuUserIdUser.get(0).getId()); //修改用户 int update = privilageCpUserDOMapper.updateById(privilageCpUserDO); //维护部门关系——删除原有部门关系 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(DATABASE_CP_USER_ID_KEY,cuUserIdUser.get(0).getId()); + queryWrapper.eq(DATABASE_CP_USER_ID_KEY, cuUserIdUser.get(0).getId()); privilageCpUserDepartmentDOMapper.delete(queryWrapper); } Long[] departIds = wxCpUser.getDepartIds(); Integer[] orders = wxCpUser.getOrders(); Integer[] isLeaderInDept = wxCpUser.getIsLeaderInDept(); - for (int i = 0;i queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(DATABASE_CP_USER_ID_KEY,privilageCpUserDO.getId()); + queryWrapper.eq(DATABASE_CP_USER_ID_KEY, privilageCpUserDO.getId()); privilageCpUserDepartmentDOMapper.delete(queryWrapper); Long[] departIds = employee.getDepartIds(); Integer[] orders = employee.getOrders(); Integer[] isLeaderInDept = employee.getIsLeaderInDept(); - for (int i = 0;i(privilageCpUserDO)); } + /** + * 下载员工二维码 + * @param response + * @throws WxErrorException + * @throws IOException + */ + public void downLoadQrCode(HttpServletResponse response) throws WxErrorException, IOException { + List wxCpUsers = qwMailListManageService.syncUser(); + + + byte[] buffer = new byte[1024]; + // 生成的ZIP文件名为Demo.zip + String strZipName = "bsd_qr_code.zip"; + ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipName)); + + + int count = wxCpUsers.size(); + + for (int i = 0; i < count; i++) { + System.out.println("总进度:" + count + " | 当前进度:" + i); + WxCpUser wxCpUser = wxCpUsers.get(i); + String url = wxCpUser.getQrCode(); + String code = wxCpUser.getName(); + + InputStream inStream = getInputStream(url); + out.putNextEntry(new ZipEntry(code + ".png")); + int len; + // 读入需要下载的文件的内容,打包到zip文件 + while ((len = inStream.read(buffer)) > 0) { + out.write(buffer, 0, len); + } + out.closeEntry(); + inStream.close(); + } + out.flush(); + out.close(); + System.out.println("生成压缩包成功"); + + + ServletOutputStream outputStream = response.getOutputStream(); + byte[] bufferNew = new byte[1024]; + FileInputStream inStream = new FileInputStream(new File(strZipName)); + int lenNew; + // 读入需要下载的文件的内容,打包到zip文件 + while ((lenNew = inStream.read(bufferNew)) > 0) { + outputStream.write(bufferNew, 0, lenNew); + } + + } + + /** + * 下载url文件 + * @param fileUrl 文件url + * @return + */ + private InputStream getInputStream(String fileUrl) { + + URLConnection connection = null; + try { + connection = new URL(fileUrl).openConnection(); + } catch (IOException e) { + e.printStackTrace(); + } + InputStream inputStream = null; + try { + inputStream = connection.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + + return inputStream; + } + } diff --git a/src/main/java/com/kiisoo/ic/store/constant/Constants.java b/src/main/java/com/kiisoo/ic/store/constant/Constants.java new file mode 100644 index 0000000..33162cc --- /dev/null +++ b/src/main/java/com/kiisoo/ic/store/constant/Constants.java @@ -0,0 +1,16 @@ +package com.kiisoo.ic.store.constant; +/** + * @Description: 店铺相关 静态量 + * @Auther: yechenhao + * @Date: 2020/4/9 14:44 + * @Version: v1 + */ +public class Constants { + /** + * 数据库中的 mobile 字段 + */ + public static final String DATABASE_STORE_ID_KEY = "store_id"; + + + +} diff --git a/src/main/java/com/kiisoo/ic/store/controller/StoreEmployeeController.java b/src/main/java/com/kiisoo/ic/store/controller/StoreEmployeeController.java new file mode 100644 index 0000000..96bcbdd --- /dev/null +++ b/src/main/java/com/kiisoo/ic/store/controller/StoreEmployeeController.java @@ -0,0 +1,43 @@ +package com.kiisoo.ic.store.controller; + +import com.kiisoo.ic.common.BaseController; +import com.kiisoo.ic.store.service.StoreEmployeeService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Map; + +/** + * @Description: 门店号管理controller + * @Auther: yechenhao + * @Date: 2020/4/9 18:23 + * @Version: v1 + */ +@Controller +@RequestMapping("/store/emp") +@Slf4j +public class StoreEmployeeController extends BaseController { + + private StoreEmployeeService storeEmployeeService; + + /** + * + * @return + */ + @RequestMapping(value = "list",method = RequestMethod.POST) + @ResponseBody + public Map listStoreUser(@RequestParam("storeId")Long storeId, @RequestParam("regionId")Long regionId, + @RequestParam("pageNum")Integer pageNum, @RequestParam("pageSize")Integer pageSize){ + try { + storeEmployeeService.listStoreUser(storeId,regionId,pageNum, pageSize); + return data(null); + }catch (Exception e){ + log.error("添加用户失败",e); + return fail(); + } + } +} diff --git a/src/main/java/com/kiisoo/ic/store/entity/StoreUserDTO.java b/src/main/java/com/kiisoo/ic/store/entity/StoreUserDTO.java new file mode 100644 index 0000000..4647847 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/store/entity/StoreUserDTO.java @@ -0,0 +1,33 @@ +package com.kiisoo.ic.store.entity; + +import lombok.Data; + +/** + * @Description: 门店号数据显示实体 + * @Auther: yechenhao + * @Date: 2020/4/9 18:27 + * @Version: v1 + */ +@Data +public class StoreUserDTO extends PoiStore{ + /** + * 序号 + */ + private Integer orderNum; + /** + * 企业微信账号 + */ + private String cpUserId; + /** + * 导购人数 + */ + private Integer staffNum; + /** + * 顾客人数 + */ + private Integer customerNum; + /** + * 二维码 + */ + private Integer qrCodeAction; +} diff --git a/src/main/java/com/kiisoo/ic/store/service/StoreEmployeeService.java b/src/main/java/com/kiisoo/ic/store/service/StoreEmployeeService.java new file mode 100644 index 0000000..2eedbd4 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/store/service/StoreEmployeeService.java @@ -0,0 +1,85 @@ +package com.kiisoo.ic.store.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; +import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; +import com.kiisoo.ic.store.entity.PoiStore; +import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO; +import com.kiisoo.ic.store.entity.StoreUserDTO; +import com.kiisoo.ic.store.mapper.PoiStoreDOMapper; +import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; +import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +import static com.kiisoo.ic.store.constant.Constants.DATABASE_STORE_ID_KEY; + +/** + * @Description: 门店号管理service + * @Auther: yechenhao + * @Date: 2020/4/9 18:27 + * @Version: v1 + */ +@Service +public class StoreEmployeeService { + + private PoiStoreDOMapper poiStoreDOMapper; + + private PrivilageCpUserStoreDOMapper privilageCpUserStoreDOMapper; + + private PrivilageCpUserDOMapper privilageCpUserDOMapper; + + private PoiStoreStaffDOMapper poiStoreStaffDOMapper; + + /** + * 查询门店号 + * @param storeId 门店id + * @param regionId 区域id + * @param pageNum 页码 + * @param pageSize 每页显示条数 + */ + public void listStoreUser(Long storeId, Long regionId, Integer pageNum, Integer pageSize) { + Map result = new HashMap<>(); + List poiStores = null; + PageHelper.startPage(pageNum, pageSize); + if (storeId != null){ + QueryWrapper storeParams = new QueryWrapper<>(); + poiStores = poiStoreDOMapper.selectList(storeParams); + }else if(regionId != null){ + poiStores = poiStoreDOMapper.selectRegionShop(regionId); + }else{ + poiStores = poiStoreDOMapper.selectList(null); + } + List storeUserDTOS = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(poiStores)){ + int orderNum = (pageNum -1) * pageSize; + for(PoiStore store : poiStores) { + StoreUserDTO storeUserDTO = new StoreUserDTO(); + BeanUtils.copyProperties(store,storeUserDTO); + //设置序号 + storeUserDTO.setOrderNum(++orderNum); + //查询店铺绑定的企业微信 + QueryWrapper relationParams = new QueryWrapper<>(); + relationParams.eq(DATABASE_STORE_ID_KEY,storeUserDTO.getId()); + PrivilageCpUserStoreDO cpUserStoreDO = privilageCpUserStoreDOMapper.selectOne(relationParams); + if (cpUserStoreDO != null){ + //企业微信存在则查询数据 + PrivilageCpUserDO privilageCpUserDO = privilageCpUserDOMapper.selectById(cpUserStoreDO.getCpUserId()); + storeUserDTO.setCpUserId(privilageCpUserDO.getCpUserId()); + } + + //查询导购数目 + +// poiStoreStaffDOMapper + } + } + + Page pageList = (Page)storeUserDTOS; + + } +}