From 692fd6a34f8c43c5bfc3f8c5c75e26090c4c2d9a Mon Sep 17 00:00:00 2001 From: zyy <121611808@qq.com> Date: Sat, 17 Oct 2020 10:13:47 +0800 Subject: [PATCH] up --- pom.xml | 10 + .../com/bsd/cases/constants/Constants.java | 38 + .../controller/CaseCompanyController.java | 149 ++++ .../cases/controller/CaseStoreController.java | 158 ++++ .../cases/controller/CaseUserController.java | 175 ++++ .../bsd/cases/service/CaseAreaService.java | 17 + .../bsd/cases/service/CaseCompanyService.java | 25 + .../bsd/cases/service/CaseStoreService.java | 19 + .../bsd/cases/service/CaseUsersService.java | 40 + .../service/impl/CaseAreaServiceImpl.java | 70 ++ .../service/impl/CaseCompanyServiceImpl.java | 110 +++ .../service/impl/CaseStoreServiceImpl.java | 124 +++ .../service/impl/CaseUsersServiceImpl.java | 831 ++++++++++++++++++ .../java/com/bsd/cases/util/DateUtils.java | 12 + .../java/com/bsd/cases/util/StringUtils.java | 12 + .../com/bsd/cases/util/WechatAccessUtils.java | 176 ++++ 16 files changed, 1966 insertions(+) create mode 100644 src/main/java/com/bsd/cases/controller/CaseCompanyController.java create mode 100644 src/main/java/com/bsd/cases/controller/CaseStoreController.java create mode 100644 src/main/java/com/bsd/cases/controller/CaseUserController.java create mode 100644 src/main/java/com/bsd/cases/service/CaseAreaService.java create mode 100644 src/main/java/com/bsd/cases/service/CaseCompanyService.java create mode 100644 src/main/java/com/bsd/cases/service/CaseStoreService.java create mode 100644 src/main/java/com/bsd/cases/service/CaseUsersService.java create mode 100644 src/main/java/com/bsd/cases/service/impl/CaseAreaServiceImpl.java create mode 100644 src/main/java/com/bsd/cases/service/impl/CaseCompanyServiceImpl.java create mode 100644 src/main/java/com/bsd/cases/service/impl/CaseStoreServiceImpl.java create mode 100644 src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java create mode 100644 src/main/java/com/bsd/cases/util/StringUtils.java create mode 100644 src/main/java/com/bsd/cases/util/WechatAccessUtils.java diff --git a/pom.xml b/pom.xml index cb09397..dfa67b5 100644 --- a/pom.xml +++ b/pom.xml @@ -225,6 +225,16 @@ commons-logging 1.2 + + org.apache.poi + poi + 4.1.0 + + + org.apache.poi + poi-ooxml + 4.1.0 + diff --git a/src/main/java/com/bsd/cases/constants/Constants.java b/src/main/java/com/bsd/cases/constants/Constants.java index bd1f4fd..efb9853 100644 --- a/src/main/java/com/bsd/cases/constants/Constants.java +++ b/src/main/java/com/bsd/cases/constants/Constants.java @@ -2,6 +2,14 @@ package com.bsd.cases.constants; public class Constants { + + public static final int PAGE_SIZE = 20; + + public static final String RETAIL_KEY = "cb472ab819ba7209e37fbf0e501a2964"; + + public static final String MOFANG_KEY = "876215850057f8245d2bd82554bd7e7c"; + + public static final String SYSTEM_USER = "admin"; /** * state 为 1有效 @@ -11,4 +19,34 @@ public class Constants { * state 为 0无效 */ public static final Integer STATE_INVALID = 0; + + //禁用 + public static final int DISABLE = 0; + //启用 + public static final int ENABLE = 1; + + //管理员 + public static final int ADMIN_USER = 1; + //店铺用户 + public static final int MOFANG_USER = 2; + //微信用户 + public static final int WECHAT_USER = 3; + //总部用户 + public static final int HEAD_USER = 4; + //店铺用户 + public static final int COMPANY_USER = 5; + + + public static final String DOWNLOAD_TYPE_IMAGE = ".png"; + + public static final String DOWNLOAD_TYPE_VIDEO = ".mp4"; + + //缓存 key + public static final String SIGN_UP_KEY = "SIGN_UP_KEY"; + + public static final String ACTIVITY_KEY = "ACTIVITY_KEY"; + + public static final String RANK_KEY = "RANK_KEY"; + + public static final Integer SIGN_UP_SELECTED = 1; } diff --git a/src/main/java/com/bsd/cases/controller/CaseCompanyController.java b/src/main/java/com/bsd/cases/controller/CaseCompanyController.java new file mode 100644 index 0000000..1e5e468 --- /dev/null +++ b/src/main/java/com/bsd/cases/controller/CaseCompanyController.java @@ -0,0 +1,149 @@ +package com.bsd.cases.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.model.CaseCompany; +import com.bsd.cases.service.CaseCompanyService; +import com.bsd.cases.util.AjaxResult; +import com.bsd.cases.util.PageAjax; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresAuthentication; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api("公司API") +@RestController +@RequestMapping("/api/company") +public class CaseCompanyController { + + @Resource + private CaseCompanyService caseCompanyService; + + @ApiOperation(value = "公司列表,不需要传参,返回所有公司信息", notes = "公司列表") + @PostMapping("list") + public AjaxResult list(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + + try { + ajaxResult.setData(caseCompanyService.list(jsonObject)); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + ajaxResult.setRetmsg("获取公司列表成功"); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("获取公司列表失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + + @ApiOperation(value = "公司列表PC", notes = "公司列表PC") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "起始页码"), + @ApiImplicitParam(name = "key", value = "公司名称"), + @ApiImplicitParam(name = "areaId", value = "区域id"), + @ApiImplicitParam(name = "state", value = "1:正常,0:删除") + }) + @PostMapping("listbypage") + @RequiresAuthentication + public AjaxResult listByPage(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + PageAjax pageAjax = caseCompanyService.listByPage(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setData(pageAjax); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + @ApiOperation(value = "公司详情PC", notes = "公司详情PC") + @ApiImplicitParams({ + @ApiImplicitParam(name = "companyId", value = "公司id") + }) + @PostMapping("detail") + @RequiresAuthentication + public AjaxResult detail(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + CaseCompany caseCompany = caseCompanyService.detail(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setData(caseCompany); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + + @ApiOperation(value = "增加/编辑公司", notes = "增加/编辑公司") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "公司id"), + @ApiImplicitParam(name = "companyId", value = "公司编号"), + @ApiImplicitParam(name = "companyName", value = "公司名称"), + @ApiImplicitParam(name = "areaId", value = "区域id") + }) + @PostMapping("add") + @RequiresAuthentication + public AjaxResult add(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + caseCompanyService.add(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + @ApiOperation(value = "删除", notes = "增加公司") + @ApiImplicitParams({ + @ApiImplicitParam(name = "companyId", value = "公司id") + }) + @PostMapping("delete") + @RequiresAuthentication + public AjaxResult delete(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + caseCompanyService.delete(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + +} diff --git a/src/main/java/com/bsd/cases/controller/CaseStoreController.java b/src/main/java/com/bsd/cases/controller/CaseStoreController.java new file mode 100644 index 0000000..6c19b55 --- /dev/null +++ b/src/main/java/com/bsd/cases/controller/CaseStoreController.java @@ -0,0 +1,158 @@ +package com.bsd.cases.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.model.CaseStore; +import com.bsd.cases.service.CaseStoreService; +import com.bsd.cases.util.AjaxResult; +import com.bsd.cases.util.PageAjax; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresAuthentication; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api("店铺API") +@RestController +@RequestMapping("/api/store") +public class CaseStoreController { + + @Resource + private CaseStoreService caseStoreService; + + @ApiOperation(value = "店铺列表", notes = "店铺列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "起始页码") + }) + @PostMapping("list") + public AjaxResult list(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + + try { + PageAjax pageAjax = caseStoreService.list(jsonObject); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + ajaxResult.setData(pageAjax); + ajaxResult.setRetmsg("获取店铺成功"); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("获取店铺失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + + return ajaxResult; + + } + + + @ApiOperation(value = "店铺列表PC", notes = "店铺列表PC") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "起始页码"), + @ApiImplicitParam(name = "key", value = "店铺编号或店铺名称"), + @ApiImplicitParam(name = "companyId", value = "公司id"), + @ApiImplicitParam(name = "state", value = "1:正常,0:删除") + }) + @PostMapping("listbypage") + @RequiresAuthentication + public AjaxResult listByPage(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + PageAjax pageAjax = caseStoreService.listByPage(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setData(pageAjax); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + @ApiOperation(value = "保存店铺信息", notes = "保存店铺信息") + @ApiImplicitParams({ + @ApiImplicitParam(name = "storeName", value = "店铺名称"), + @ApiImplicitParam(name = "companyId", value = "公司id"), + @ApiImplicitParam(name = "companyCode", value = "公司编码"), + @ApiImplicitParam(name = "storeId", value = "店铺id"), + @ApiImplicitParam(name = "storeCode", value = "店铺编码"), + + }) + @PostMapping("add") + @RequiresAuthentication + public AjaxResult add(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + caseStoreService.add(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + + @ApiOperation(value = "删除", notes = "删除店铺") + @ApiImplicitParams({ + @ApiImplicitParam(name = "storeId", value = "店铺id") + }) + @PostMapping("delete") + @RequiresAuthentication + public AjaxResult delete(@RequestBody JSONObject jsonObject) { + + + AjaxResult ajaxResult = new AjaxResult(); + try { + + caseStoreService.delete(jsonObject); + ajaxResult.setRetmsg("操作成功"); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + + } + + + @ApiOperation(value = "店铺详情PC", notes = "店铺详情PC") + @ApiImplicitParams({ + @ApiImplicitParam(name = "storeId", value = "店铺id") + + }) + @PostMapping("detail") + public AjaxResult detail(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + CaseStore caseStore = caseStoreService.detail(jsonObject); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + ajaxResult.setData(caseStore); + ajaxResult.setRetmsg("获取店铺详情成功"); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("获取失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + +} \ No newline at end of file diff --git a/src/main/java/com/bsd/cases/controller/CaseUserController.java b/src/main/java/com/bsd/cases/controller/CaseUserController.java new file mode 100644 index 0000000..8330312 --- /dev/null +++ b/src/main/java/com/bsd/cases/controller/CaseUserController.java @@ -0,0 +1,175 @@ +package com.bsd.cases.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.model.CaseUsers; +import com.bsd.cases.service.CaseUsersService; +import com.bsd.cases.util.AjaxResult; +import com.bsd.cases.util.FileUtils; +import com.bsd.cases.util.PageAjax; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresAuthentication; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/api/user") +public class CaseUserController { + + @Resource + private CaseUsersService caseUsersService; + @Value("${upload.path}") + private String uploadPath; + + @ApiOperation(value = "用户列表PC", notes = "用户列表PC") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "起始页码"), + @ApiImplicitParam(name = "name", value = "员工工号或者姓名"), + @ApiImplicitParam(name = "storeId", value = "店铺id"), + @ApiImplicitParam(name = "companyId", value = "公司id"), + @ApiImplicitParam(name = "activityState", value = "活动状态"), + @ApiImplicitParam(name = "state", value = "1:正常,0:删除") + }) + @PostMapping("listbypage") + @RequiresAuthentication + public AjaxResult listByPage(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + PageAjax pageAjax = caseUsersService.listByPage(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setData(pageAjax); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + + @ApiOperation(value = "新增用户", notes = "新增用户") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "员工id"), + @ApiImplicitParam(name = "userName", value = "姓名"), + @ApiImplicitParam(name = "userNo", value = "员工工号"), + @ApiImplicitParam(name = "storeId", value = "店铺id"), + @ApiImplicitParam(name = "companyId", value = "公司id"), + @ApiImplicitParam(name = "storeName", value = "店铺名称"), + @ApiImplicitParam(name = "companyName", value = "公司名称"), + @ApiImplicitParam(name = "state", value = "1:正常,0:删除") + }) + @PostMapping("add") + @RequiresAuthentication + public AjaxResult add(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + caseUsersService.add(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + + @ApiOperation(value = "用户详情", notes = "用户详情") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "用户id") + }) + @PostMapping("detail") + @RequiresAuthentication + public AjaxResult detail(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + CaseUsers users = caseUsersService.detail(jsonObject); + ajaxResult.setData(users); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + @ApiOperation(value = "删除用户", notes = "删除用户") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "用户id") + }) + @PostMapping("delete") + @RequiresAuthentication + public AjaxResult delete(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + + caseUsersService.delete(jsonObject); + ajaxResult.setRetmsg("操作成功"); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + + e.printStackTrace(); + ajaxResult.setRetmsg("操作失败:" + e.getMessage()); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + return ajaxResult; + } + + @ApiOperation(value = "导出用户", notes = "导入用户") + @PostMapping(value = "export") + @ResponseBody + public AjaxResult export(@RequestBody JSONObject jsonObject) { + + AjaxResult ajaxResult = new AjaxResult(); + try { + String url = caseUsersService.export(jsonObject); + ajaxResult.setData(url); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + e.printStackTrace(); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + //返回json + return ajaxResult; + } + + + //处理文件上传 + @ApiOperation(value = "导入用户", notes = "导入用户") + @PostMapping(value = "uploadexcel") + @ResponseBody + public AjaxResult uploadExcel(@RequestParam("file") MultipartFile file) { + + String fileName = file.getOriginalFilename(); + AjaxResult ajaxResult = new AjaxResult(); + try { + FileUtils.uploadFile(file.getBytes(), uploadPath, fileName); + caseUsersService.saveUserList(uploadPath, fileName); + ajaxResult.setRetcode(AjaxResult.SUCCESS); + } catch (Exception e) { + e.printStackTrace(); + ajaxResult.setRetcode(AjaxResult.FAILED); + } + //返回json + return ajaxResult; + } + +} diff --git a/src/main/java/com/bsd/cases/service/CaseAreaService.java b/src/main/java/com/bsd/cases/service/CaseAreaService.java new file mode 100644 index 0000000..db71129 --- /dev/null +++ b/src/main/java/com/bsd/cases/service/CaseAreaService.java @@ -0,0 +1,17 @@ +package com.bsd.cases.service; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.model.CaseArea; +import com.bsd.cases.util.PageAjax; + +import java.util.List; + +public interface CaseAreaService { + + + public List list(); + + public PageAjax listByPage(JSONObject params); + + public void add(JSONObject params); +} diff --git a/src/main/java/com/bsd/cases/service/CaseCompanyService.java b/src/main/java/com/bsd/cases/service/CaseCompanyService.java new file mode 100644 index 0000000..a064f8a --- /dev/null +++ b/src/main/java/com/bsd/cases/service/CaseCompanyService.java @@ -0,0 +1,25 @@ +package com.bsd.cases.service; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.model.CaseCompany; +import com.bsd.cases.util.PageAjax; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional +@Service +public interface CaseCompanyService { + + List list(JSONObject jsonObject); + + + PageAjax listByPage(JSONObject params); + + CaseCompany detail(JSONObject params); + + void delete(JSONObject params); + + void add(JSONObject params); +} diff --git a/src/main/java/com/bsd/cases/service/CaseStoreService.java b/src/main/java/com/bsd/cases/service/CaseStoreService.java new file mode 100644 index 0000000..6ea9bec --- /dev/null +++ b/src/main/java/com/bsd/cases/service/CaseStoreService.java @@ -0,0 +1,19 @@ +package com.bsd.cases.service; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.model.CaseStore; +import com.bsd.cases.util.PageAjax; + +public interface CaseStoreService { + + + public PageAjax list(JSONObject params); + + public PageAjax listByPage(JSONObject params); + + public void add(JSONObject params); + + public void delete(JSONObject params); + + public CaseStore detail(JSONObject params); +} diff --git a/src/main/java/com/bsd/cases/service/CaseUsersService.java b/src/main/java/com/bsd/cases/service/CaseUsersService.java new file mode 100644 index 0000000..47e27d3 --- /dev/null +++ b/src/main/java/com/bsd/cases/service/CaseUsersService.java @@ -0,0 +1,40 @@ +package com.bsd.cases.service; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.model.CaseUsers; +import com.bsd.cases.model.ImportPO; +import com.bsd.cases.util.PageAjax; + +import java.io.IOException; +import java.util.List; + +public interface CaseUsersService { + + + CaseUsers findUser(String userName, String password); + + CaseUsers selectByUserNoOrOpenId(String key); + + CaseUsers findByUserNo(String userNo); + + CaseUsers currentUser(); + + String autoLogin(String params); + + CaseUsers findById(Integer userId); + + PageAjax listByPage(JSONObject params); + + void add(JSONObject params); + + List importFromExcel(String uploadPath, String fileName)throws IOException; + + + CaseUsers detail(JSONObject params); + + void delete(JSONObject params); + +} + + + diff --git a/src/main/java/com/bsd/cases/service/impl/CaseAreaServiceImpl.java b/src/main/java/com/bsd/cases/service/impl/CaseAreaServiceImpl.java new file mode 100644 index 0000000..b8a9b1c --- /dev/null +++ b/src/main/java/com/bsd/cases/service/impl/CaseAreaServiceImpl.java @@ -0,0 +1,70 @@ +package com.bsd.cases.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.constants.Constants; +import com.bsd.cases.mapper.CaseAreaMapper; +import com.bsd.cases.model.CaseArea; +import com.bsd.cases.service.CaseAreaService; +import com.bsd.cases.util.PageAjax; +import com.github.pagehelper.PageHelper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import tk.mybatis.mapper.entity.Condition; +import tk.mybatis.mapper.entity.Example; +import javax.annotation.Resource; +import java.util.List; + +@Service +@Transactional +public class CaseAreaServiceImpl implements CaseAreaService { + + @Resource + private CaseAreaMapper caseAreaMapper; + + public List list() { + + return caseAreaMapper.selectAll(); + } + + public PageAjax listByPage(JSONObject params) { + + Integer page = params.getInteger("page"); + Integer state = params.getInteger("state"); + String key = params.getString("key"); + + Condition condition = new Condition(CaseArea.class); + Example.Criteria criteria = condition.createCriteria(); + criteria.andCondition("state=" + state); + + if (null != key) { + + key = com.bsd.cases.util.StringUtils.generateLike(key); + criteria.andLike("name", key); + } + + PageHelper.startPage(page, Constants.PAGE_SIZE); + List areaList = caseAreaMapper.selectByExample(condition); + PageAjax pageAjax = new PageAjax<>(areaList); + return pageAjax; + + } + + public void add(JSONObject params) { + + String areaName = params.getString("areaName"); + Integer areaId = params.getInteger("areaId"); + + if (areaId == null) { + + CaseArea caseArea = new CaseArea(); + caseArea.setAreaName(areaName); + caseArea.setState(Constants.ENABLE); + caseAreaMapper.insert(caseArea); + } else { + + CaseArea caseArea = caseAreaMapper.selectByPrimaryKey(areaId); + caseArea.setAreaName(areaName); + caseAreaMapper.updateByPrimaryKey(caseArea); + } + } +} diff --git a/src/main/java/com/bsd/cases/service/impl/CaseCompanyServiceImpl.java b/src/main/java/com/bsd/cases/service/impl/CaseCompanyServiceImpl.java new file mode 100644 index 0000000..e274d8a --- /dev/null +++ b/src/main/java/com/bsd/cases/service/impl/CaseCompanyServiceImpl.java @@ -0,0 +1,110 @@ +package com.bsd.cases.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.constants.Constants; +import com.bsd.cases.mapper.CaseCompanyMapper; +import com.bsd.cases.model.CaseCompany; +import com.bsd.cases.service.CaseCompanyService; +import com.bsd.cases.util.DateUtils; +import com.bsd.cases.util.PageAjax; +import com.github.pagehelper.PageHelper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import tk.mybatis.mapper.entity.Condition; +import tk.mybatis.mapper.entity.Example; + +import javax.annotation.Resource; +import java.util.List; + +@Transactional +@Service +public class CaseCompanyServiceImpl implements CaseCompanyService { + + @Resource + private CaseCompanyMapper caseCompanyMapper; + + public List list(JSONObject jsonObject) { + + Long areaId = jsonObject.getLong("areaId"); + if (null == areaId) { + + return caseCompanyMapper.selectAll(); + } else { + + CaseCompany caseCompany = new CaseCompany(); + caseCompany.setAreaId(areaId); + return caseCompanyMapper.select(caseCompany); + } + } + + + public PageAjax listByPage(JSONObject params) { + + Integer page = params.getInteger("page"); + Integer state = params.getInteger("state"); + String name = params.getString("key"); + Integer areaId = params.getInteger("areaId"); + + Condition condition = new Condition(CaseCompany.class); + Example.Criteria criteria = condition.createCriteria(); + criteria.andCondition("state=" + state); + if (null != areaId) { + + criteria.andCondition("area_id=" + areaId); + } + if (StringUtils.isNotEmpty(name)) { + + name = com.bsd.cases.util.StringUtils.generateLike(name); + criteria.andLike("companyName", name); + } + + PageHelper.startPage(page, Constants.PAGE_SIZE); + List companyList =caseCompanyMapper.selectByExample(condition); + PageAjax pageAjax = new PageAjax<>(companyList); + return pageAjax; + } + + public CaseCompany detail(JSONObject params) { + + Integer companyId = params.getInteger("companyId"); + return caseCompanyMapper.selectByPrimaryKey(companyId); + + } + + public void delete(JSONObject params) { + + Integer companyId = params.getInteger("companyId"); + CaseCompany caseCompany =caseCompanyMapper.selectByPrimaryKey(companyId); + caseCompany.setState(Constants.DISABLE); + caseCompanyMapper.updateByPrimaryKey(caseCompany); + } + + public void add(JSONObject params) { + + Long id = params.getLong("id"); + String companyId = params.getString("companyId"); + String companyName = params.getString("companyName"); + Long areaId = params.getLong("areaId"); + + + if (null != id) { + + CaseCompany caseCompany =caseCompanyMapper.selectByPrimaryKey(id); + caseCompany.setCompanyId(companyId); + caseCompany.setCompanyName(companyName); + caseCompany.setAreaId(areaId); + caseCompanyMapper.updateByPrimaryKey(caseCompany); + } else { + + CaseCompany caseCompany = new CaseCompany(); + caseCompany.setCompanyName(companyName); + caseCompany.setCompanyId(companyId); + caseCompany.setAreaId(areaId); + caseCompany.setState(Constants.ENABLE); + caseCompany.setCreateDateTime(DateUtils.curDateTime()); + caseCompanyMapper.insert(caseCompany); + } + + } +} diff --git a/src/main/java/com/bsd/cases/service/impl/CaseStoreServiceImpl.java b/src/main/java/com/bsd/cases/service/impl/CaseStoreServiceImpl.java new file mode 100644 index 0000000..1ef3a6b --- /dev/null +++ b/src/main/java/com/bsd/cases/service/impl/CaseStoreServiceImpl.java @@ -0,0 +1,124 @@ +package com.bsd.cases.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.constants.Constants; +import com.bsd.cases.mapper.CaseCompanyMapper; +import com.bsd.cases.mapper.CaseStoreMapper; +import com.bsd.cases.model.CaseCompany; +import com.bsd.cases.model.CaseStore; +import com.bsd.cases.model.CaseUsers; +import com.bsd.cases.service.CaseStoreService; +import com.bsd.cases.util.DateUtils; +import com.bsd.cases.util.PageAjax; +import com.github.pagehelper.PageHelper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import tk.mybatis.mapper.entity.Condition; +import tk.mybatis.mapper.entity.Example; +import javax.annotation.Resource; +import java.util.List; + +@Service +@Transactional +public class CaseStoreServiceImpl implements CaseStoreService { + + @Resource + private CaseStoreMapper caseStoreMapper; + @Resource + private CaseCompanyMapper caseCompanyMapper; + + public PageAjax list(JSONObject params) { + + Integer page = params.getInteger("page"); + String key = params.getString("key"); + PageHelper.startPage(page, Constants.PAGE_SIZE); + Condition condition = new Condition(CaseUsers.class); + Example.Criteria criteria = condition.createCriteria(); + if(!StringUtils.isEmpty(key)){ + + key = com.bsd.cases.util.StringUtils.generateLike(key); + criteria.andLike("storeName", key).orLike("storeId", key); + } + List storeList = caseStoreMapper.selectByExample(condition); + PageAjax pageAjax = new PageAjax<>(storeList); + return pageAjax; + } + + public PageAjax listByPage(JSONObject params) { + + + Integer page = params.getInteger("page"); + Integer state = params.getInteger("state"); + String key = params.getString("key"); + Integer companyId = params.getInteger("companyId"); + + Condition condition = new Condition(CaseUsers.class); + Example.Criteria criteria = condition.createCriteria(); + criteria.andCondition("state=" + state); + + if (null != companyId) { + + criteria.andCondition("company_id=" + companyId); + } + if (null != key) { + + key = com.bsd.cases.util.StringUtils.generateLike(key); + criteria.andLike("storeName", key).orLike("storeId", key); + } + + PageHelper.startPage(page, Constants.PAGE_SIZE); + List usersList = caseStoreMapper.selectByExample(condition); + PageAjax pageAjax = new PageAjax<>(usersList); + return pageAjax; + + } + + public void add(JSONObject params) { + + Integer storeId = params.getInteger("storeId"); + Long companyId = params.getLong("companyId"); + String storeName = params.getString("storeName"); + String storeCode = params.getString("storeCode"); + + CaseCompany caseCompany =caseCompanyMapper.selectByPrimaryKey(companyId); + + if (storeId == null) { + + CaseStore caseStore = new CaseStore(); + caseStore.setStoreName(storeName); + caseStore.setStoreId(storeCode); + caseStore.setCompanyId(companyId); + caseStore.setCompanyCode(caseCompany.getCompanyId()); + caseStore.setCompanyName(caseCompany.getCompanyName()); + caseStore.setCreateDateTime(DateUtils.curDateTime()); + caseStore.setState(Constants.ENABLE); + caseStoreMapper.insert(caseStore); + } else { + + CaseStore caseStore = caseStoreMapper.selectByPrimaryKey(storeId); + caseStore.setStoreName(storeName); + caseStore.setStoreId(storeCode); + caseStore.setCompanyId(companyId); + caseStore.setCompanyCode(caseCompany.getCompanyId()); + caseStore.setCompanyName(caseCompany.getCompanyName()); + caseStore.setState(Constants.ENABLE); + caseStoreMapper.updateByPrimaryKey(caseStore); + } + + } + + public void delete(JSONObject params) { + + Long storeId = params.getLong("storeId"); + CaseStore caseStore = caseStoreMapper.selectByPrimaryKey(storeId); + caseStore.setState(Constants.DISABLE); + caseStoreMapper.updateByPrimaryKey(caseStore); + } + + public CaseStore detail(JSONObject params) { + + Integer storeId = params.getInteger("storeId"); + return caseStoreMapper.selectByPrimaryKey(storeId); + } +} diff --git a/src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java b/src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java new file mode 100644 index 0000000..bb8666e --- /dev/null +++ b/src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java @@ -0,0 +1,831 @@ +package com.bsd.cases.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.bsd.cases.constants.Constants; +import com.bsd.cases.mapper.CaseAreaMapper; +import com.bsd.cases.mapper.CaseCompanyMapper; +import com.bsd.cases.mapper.CaseStoreMapper; +import com.bsd.cases.mapper.CaseUsersMapper; +import com.bsd.cases.model.*; +import com.bsd.cases.service.CaseUsersService; +import com.bsd.cases.util.*; +import com.github.pagehelper.PageHelper; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import tk.mybatis.mapper.entity.Condition; +import tk.mybatis.mapper.entity.Example; + +import javax.annotation.Resource; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +@Service +@Transactional +public class CaseUsersServiceImpl implements CaseUsersService { + + Logger logger = LoggerFactory.getLogger(getClass()); + @Resource + private CaseUsersMapper caseUsersMapper; + @Resource + private CaseCompanyMapper caseCompanyMapper; + @Resource + private CaseStoreMapper caseStoreMapper; + @Resource + private CaseAreaMapper caseAreaMapper; + + @Value("${export.path}") + private String exportPath; + @Value("${export.url}") + private String exportUrl; + + public CaseUsers findUser(String userName, String password) { + + CaseUsers caseUser = new CaseUsers(); + caseUser.setUserName(userName); + caseUser.setPassword(password); + return caseUsersMapper.selectOne(caseUser); + } + + + public CaseUsers selectByUserNoOrOpenId(String key) { + + CaseUsers caseUser = new CaseUsers(); + caseUser.setUserNo(key); + caseUser = caseUsersMapper.selectOne(caseUser); + if (null == caseUser) { + caseUser = new CaseUsers(); + caseUser.setOpenId(key); + caseUser = caseUsersMapper.selectOne(caseUser); + } + + return caseUser; + } + + public CaseUsers findByUserNo(String userNo) { + + CaseUsers caseUser = new CaseUsers(); + caseUser.setUserNo(userNo); + return caseUsersMapper.selectOne(caseUser); + + } + + public CaseUsers currentUser() { + + Subject subject = SecurityUtils.getSubject(); + String key = JWTUtil.getKey(subject.getPrincipal().toString()); + CaseUsers caseUser = selectByUserNoOrOpenId(key); + return caseUser; + } + + + public String autoLogin(String params) { + + logger.info("------auto login param-----" + params); + String paramsJson = ""; + //解码 + try { + + params = params.replaceAll(" ", "\\+"); + paramsJson = EncryptUtils.aesDecrypt(params, Constants.MOFANG_KEY); + + } catch (Exception e) { + + //如果出问题就换一个json + try { + + paramsJson = EncryptUtils.aesDecrypt(params, Constants.RETAIL_KEY); + } catch (Exception ex) { + + throw new RuntimeException("加密参数解析失败"); + } + } + + if (!StringUtils.isEmpty(paramsJson)) { + + CaseUsers caseUsers = saveCompanyAndStore(paramsJson); + if (null == caseUsers) { + + throw new RuntimeException("用户信息不一致,请联系管理员"); + + } + String token = JWTUtil.sign(caseUsers.getUserNo()); + return token; + } + return null; + + } + + /** + * 保存信息 + * + * @param paramsJson + * @return + */ + private CaseUsers saveCompanyAndStore(String paramsJson) { + + //获取解析后的信息 + JSONObject jsonObject = JSON.parseObject(paramsJson); + String companyName = jsonObject.getString("companyName"); + String companyId = jsonObject.getString("companyId"); + String storeName = jsonObject.getString("storeName"); + String storeId = jsonObject.getString("storeId"); + String userNo = jsonObject.getString("userNo"); + String userName = jsonObject.getString("userName"); + String mobile = jsonObject.getString("mobile"); + + CaseCompany caseCompany = new CaseCompany(); + CaseStore caseStore = new CaseStore(); + + + //保存公司信息 + if (!StringUtils.isEmpty(companyId) && !StringUtils.isEmpty(companyName)) { + + caseCompany.setCompanyName(companyName); + caseCompany.setCompanyId(companyId); + CaseCompany temp = caseCompanyMapper.selectOne(caseCompany); + if (null == temp) { + + caseCompany.setCreateDateTime(DateUtils.curDateTime()); + caseCompany.setState(Constants.ENABLE); + caseCompanyMapper.insert(caseCompany); + } else { + caseCompany.setId(temp.getId()); + } + } + //保存店铺信息 + if (!StringUtils.isEmpty(storeId) && !StringUtils.isEmpty(storeName)) { + + caseStore.setStoreId(storeId); + caseStore.setStoreName(storeName); + CaseStore temp = caseStoreMapper.selectOne(caseStore); + if (null == temp) { + + caseStore.setCreateDateTime(DateUtils.curDateTime()); + caseStore.setState(Constants.ENABLE); + caseStoreMapper.insert(caseStore); + } else { + caseStore.setId(temp.getId()); + } + } + + //保存用户信息 + CaseUsers caseUsers = new CaseUsers(); + + if (!StringUtils.isEmpty(userName) && !StringUtils.isEmpty(userNo)) { + +// users.setMobile(mobile); + caseUsers.setUserNo(userNo); + caseUsers.setUserName(userName); + CaseUsers temp = caseUsersMapper.selectOne(caseUsers); + if (null == temp) { + + caseUsers.setCreateDateTime(DateUtils.curDateTime()); + caseUsers.setStoreName(caseStore.getStoreName()); + caseUsers.setStoreCode(caseStore.getStoreId()); + caseUsers.setStoreId(caseStore.getId()); + caseUsers.setCompanyName(caseCompany.getCompanyName()); + caseUsers.setCompanyCode(caseCompany.getCompanyId()); + caseUsers.setCompanyId(caseCompany.getId()); + caseUsers.setCreateDateTime(DateUtils.curDateTime()); + caseUsers.setRole(Constants.MOFANG_USER); + caseUsers.setState(Constants.ENABLE); + caseUsersMapper.insert(caseUsers); + } else { + + if (StringUtils.isEmpty(caseUsers.getCompanyId())) { + + temp.setCompanyId(caseCompany.getId()); + temp.setCompanyName(caseCompany.getCompanyName()); + caseUsersMapper.updateByPrimaryKey(temp); + } + } + } + + return caseUsers; + } + + + public String wxLogin(JSONObject jsonObject) { + + String code = jsonObject.getString("code"); + String userInfor = WechatAccessUtils.userInfor(code); + JSONObject userJson = JSONObject.parseObject(userInfor); + String openId = userJson.getString("openid"); + String userName = userJson.getString("nickname"); + String userImage = userJson.getString("headimgurl"); + + CaseUsers caseUsers = new CaseUsers(); + caseUsers.setOpenId(openId); + caseUsers = caseUsersMapper.selectOne(caseUsers); + if (null == caseUsers) { + + caseUsers = new CaseUsers(); + caseUsers.setOpenId(openId); + caseUsers.setUserName(userName); + caseUsers.setUserImage(userImage); + caseUsers.setRole(Constants.WECHAT_USER); + caseUsers.setCreateDateTime(DateUtils.curDateTime()); + caseUsersMapper.insert(caseUsers); + } + + return JWTUtil.sign(caseUsers.getOpenId()); + } + + public CaseUsers findById(Integer userId) { + + return caseUsersMapper.selectByPrimaryKey(userId); + } + + public PageAjax listByPage(JSONObject params) { + + Integer page = params.getInteger("page"); + Integer state = params.getInteger("state"); + String key = params.getString("key"); + Integer companyId = params.getInteger("companyId"); + Integer storeId = params.getInteger("storeId"); + + Condition condition = new Condition(CaseUsers.class); + Example.Criteria criteria = condition.createCriteria(); + criteria.andCondition("state=" + state); + + if (null != companyId) { + + criteria.andCondition("company_id=" + companyId).andCondition("state=" + state); + } + + if (null != storeId) { + + criteria.andCondition("store_id=" + storeId).andCondition("state=" + state); + } + if (null != key) { + + key = com.bsd.cases.util.StringUtils.generateLike(key); + criteria.andLike("userName", key).orLike("userNo", key).andCondition("state=" + state); + } + condition.orderBy("createDate").desc(); + + PageHelper.startPage(page, Constants.PAGE_SIZE); + List usersList = caseUsersMapper.selectByExample(condition); + PageAjax pageAjax = new PageAjax<>(usersList); + return pageAjax; + + } + + public void add(JSONObject params) { + + Integer userId = params.getInteger("userId"); + String userName = params.getString("userName"); + String userNo = params.getString("userNo"); + Long storeId = params.getLong("storeId"); + String storeName = params.getString("storeName"); + Long companyId = params.getLong("companyId"); + String companyName = params.getString("companyName"); + Integer role = params.getInteger("role"); + + if (userId == null) { + + CaseUsers caseUsers = new CaseUsers(); + + caseUsers.setUserName(userName); + caseUsers.setUserNo(userNo); + caseUsers.setCompanyName(companyName); + caseUsers.setCompanyId(companyId); + caseUsers.setStoreId(storeId); + + if (role != Constants.HEAD_USER) { + + if (role != Constants.COMPANY_USER) { + + CaseStore caseStore = caseStoreMapper.selectByPrimaryKey(storeId); + caseUsers.setStoreCode(caseStore.getStoreId()); + caseUsers.setStoreName(storeName); + caseUsers.setStoreId(caseStore.getId()); + } + + CaseCompany caseCompany = caseCompanyMapper.selectByPrimaryKey(companyId); + caseUsers.setCompanyCode(caseCompany.getCompanyId()); + + } + + caseUsers.setState(Constants.ENABLE); + caseUsers.setCreateDateTime(DateUtils.curDateTime()); + caseUsers.setRole(role); + caseUsersMapper.insert(caseUsers); + + } else { + + CaseUsers caseUsers = caseUsersMapper.selectByPrimaryKey(userId); + caseUsers.setUserName(userName); + + if (role != Constants.HEAD_USER) { + + if (role != Constants.COMPANY_USER) { + + CaseStore caseStore = caseStoreMapper.selectByPrimaryKey(storeId); + caseUsers.setStoreCode(caseStore.getStoreId()); + caseUsers.setStoreId(caseStore.getId()); + caseUsers.setStoreName(caseStore.getStoreName()); + } + + + CaseCompany caseCompany = caseCompanyMapper.selectByPrimaryKey(companyId); + caseUsers.setCompanyName(caseCompany.getCompanyName()); + caseUsers.setCompanyId(caseCompany.getId()); + + } + + caseUsers.setRole(role); + caseUsersMapper.updateByPrimaryKey(caseUsers); + //如果不是微信用户或者管理员、需要更新用户之前上传的 + //updateSignUp(caseUsers); + } + + + } + +// private void updateSignUp(Users users) { +// +// ActivitySignUp activitySignUp = new ActivitySignUp(); +// activitySignUp.setUserId(users.getId()); +// List activitySignUpList = activitySignUpMapper.select(activitySignUp); +// +// for (ActivitySignUp temp : activitySignUpList) { +// +// temp.setStoreName(users.getStoreName()); +// temp.setStoreCode(users.getStoreCode()); +// temp.setStoreId(users.getStoreId()); +// temp.setCompanyId(users.getCompanyId()); +// temp.setCompanyName(users.getCompanyName()); +// temp.setUserName(users.getUserName()); +// temp.setUserName(users.getUserName()); +// activitySignUpMapper.updateByPrimaryKey(temp); +// } +// } + + public List importFromExcel(String uploadPath, String fileName) throws IOException { + + + String absolutePath = uploadPath + fileName; + + File file = new File(absolutePath); + + InputStream inputStream = null; + try { + inputStream = new FileInputStream(file); + HSSFWorkbook workbook = new HSSFWorkbook(inputStream); + HSSFSheet sheet = workbook.getSheetAt(0); + + List importPOList = new ArrayList<>(); + for (int i = 1; i < sheet.getLastRowNum() + 1; i++) { + + HSSFRow row = sheet.getRow(i); + + ImportPO importPO = new ImportPO(); + if (row != null) { + + row.getCell(0).setCellType(CellType.STRING); + String userNo = row.getCell(0).getStringCellValue(); + userNo = userNo.replaceAll("\'", ""); + importPO.setUserNo(userNo); + + row.getCell(1).setCellType(CellType.STRING); + String userName = row.getCell(1).getStringCellValue(); + importPO.setUserName(userName); + + if (row.getCell(2) != null) { + + row.getCell(2).setCellType(CellType.STRING); + String mobile = row.getCell(2).getStringCellValue(); + importPO.setMobile(mobile); + } + + row.getCell(3).setCellType(CellType.STRING); + String accoutType = row.getCell(3).getStringCellValue(); + + switch (accoutType) { + + case "总部账号": + + importPO.setRole(Constants.HEAD_USER); + break; + case "店铺账号": + + importPO.setRole(Constants.MOFANG_USER); + break; + case "零售公司账号": + + importPO.setRole(Constants.COMPANY_USER); + break; + } + + if (row.getCell(4) != null) { + + row.getCell(4).setCellType(CellType.STRING); + String companyCode = row.getCell(4).getStringCellValue(); + importPO.setCompanyCode(companyCode); + } + + if (row.getCell(5) != null) { + + row.getCell(5).setCellType(CellType.STRING); + String companyName = row.getCell(5).getStringCellValue(); + importPO.setCompanyName(companyName); + } + + if (row.getCell(6) != null) { + + row.getCell(6).setCellType(CellType.STRING); + String storeCode = row.getCell(6).getStringCellValue(); + importPO.setStoreCode(storeCode); + } + + if (row.getCell(7) != null) { + + row.getCell(7).setCellType(CellType.STRING); + String storeName = row.getCell(7).getStringCellValue(); + importPO.setStoreName(storeName); + } + if (row.getCell(8) != null) { + + row.getCell(8).setCellType(CellType.STRING); + String areaName = row.getCell(8).getStringCellValue(); + importPO.setAreaName(areaName); + } + + importPOList.add(importPO); + } + } + + return importPOList; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + return null; + } + + public void saveUserList(String uploadPath, String fileName) { + + + try { + + List importPOList = importFromExcel(uploadPath, fileName); + + for (ImportPO importPO : importPOList) { + + CaseUsers importUsers = new CaseUsers(); + + BeanUtils.copyProperties(importPO, importUsers); + + //获取数据库存储的用户信息 + CaseUsers caseUsers = new CaseUsers(); + caseUsers.setUserNo(importPO.getUserNo()); + caseUsers = caseUsersMapper.selectOne(caseUsers); + + if (caseUsers == null) { + + caseUsers = new CaseUsers(); + } + + int role = importPO.getRole(); + if (role == Constants.HEAD_USER) { + + caseUsers.setUserNo(importPO.getUserNo()); + caseUsers.setUserName(importPO.getUserName()); + caseUsers.setMobile(importPO.getMobile()); + caseUsers.setRole(Constants.HEAD_USER); + + } else if (role == Constants.MOFANG_USER || role == Constants.COMPANY_USER) { + + if (importPO.getCompanyCode() == null || importPO.getCompanyName() == null) { + continue; + } + + caseUsers = wrapUsers(importPO, caseUsers, role); + } + if (caseUsers.getId() == null) { + + caseUsers.setCreateDateTime(DateUtils.curDateTime()); + caseUsers.setState(Constants.ENABLE); + caseUsersMapper.insert(caseUsers); + } else { + + //先判断用户是什么角色 + caseUsersMapper.updateByPrimaryKey(caseUsers); + } + } + + } catch (IOException e) { + e.printStackTrace(); + } + } + + private CaseStore wrapStore(ImportPO importPO) { + + CaseStore caseStore = new CaseStore(); + String storeCode = importPO.getStoreCode(); + caseStore.setStoreId(storeCode); + caseStore = caseStoreMapper.selectOne(caseStore); + CaseCompany caseCompany = new CaseCompany(); + + //如果店铺不存在,初始化店铺信息 + if (null == caseStore) { + + caseStore = new CaseStore(); + caseStore.setStoreId(storeCode); + caseStore.setStoreName(importPO.getStoreName()); + caseStore.setState(Constants.ENABLE); + caseStore.setCreateDateTime(DateUtils.curDateTime()); + + caseCompany = wrapCompany(importPO); + caseStore.setCompanyCode(caseCompany.getCompanyId()); + caseStore.setCompanyName(caseCompany.getCompanyName()); + caseStore.setCompanyId(caseCompany.getId()); + caseStoreMapper.insert(caseStore); + + } else { + + //如果店铺存在则更新,店铺名称、店铺所属公司信息 + caseStore.setStoreName(importPO.getStoreName()); + //获取店铺所属的公司信息 + caseCompany = wrapCompany(importPO); + caseStore.setCompanyCode(caseCompany.getCompanyId()); + caseStore.setCompanyName(caseCompany.getCompanyName()); + caseStore.setCompanyId(caseCompany.getId()); + caseStoreMapper.updateByPrimaryKey(caseStore); + } + + return caseStore; + } + + + private CaseArea wrapArea(ImportPO importPO) { + + CaseArea caseArea = new CaseArea(); + caseArea.setAreaName(importPO.getAreaName()); + caseArea = caseAreaMapper.selectOne(caseArea); + //更新公司的区域信息 + if (null == caseArea) { + + caseArea = new CaseArea(); + caseArea.setAreaName(importPO.getAreaName()); + caseArea.setState(Constants.ENABLE); + caseAreaMapper.insert(caseArea); + } + + return caseArea; + } + + + /** + * 封装公司信息 + * + * @param importPO + * @return + */ + private CaseCompany wrapCompany(ImportPO importPO) { + + CaseCompany caseCompany = new CaseCompany(); + //获取店铺所属的公司信息 + caseCompany.setCompanyId(importPO.getCompanyCode()); + caseCompany = caseCompanyMapper.selectOne(caseCompany); + //如果公司不存在 + if (null == caseCompany) { + + caseCompany = new CaseCompany(); + caseCompany.setCompanyId(importPO.getCompanyCode()); + caseCompany.setCompanyName(importPO.getCompanyName()); + caseCompany.setState(Constants.ENABLE); + caseCompany.setCreateDateTime(DateUtils.curDateTime()); + + CaseArea caseArea = wrapArea(importPO); + caseCompany.setAreaId(caseArea.getId()); + caseCompanyMapper.insert(caseCompany); + } else { + + //如果公司存在,则店铺所属的公司信息 + caseCompany.setCompanyName(importPO.getCompanyName()); + //更新公司所属区域信息 + CaseArea caseArea = wrapArea(importPO); + caseCompany.setAreaId(caseArea.getId()); + caseCompanyMapper.updateByPrimaryKey(caseCompany); + + } + + return caseCompany; + } + + + /** + * 封装用户信息 + * + * @param importPO + * @param users + */ + private CaseUsers wrapUsers(ImportPO importPO, CaseUsers users, int role) { + + //判断店铺是否存在 + if (role == Constants.MOFANG_USER) { + + CaseStore caseStore = wrapStore(importPO); + users.setMobile(importPO.getMobile()); + users.setRole(Constants.HEAD_USER); + users.setStoreId(caseStore.getId()); + users.setStoreName(caseStore.getStoreName()); + users.setStoreCode(caseStore.getStoreId()); + users.setCompanyName(caseStore.getCompanyName()); + users.setCompanyCode(caseStore.getCompanyCode()); + users.setCompanyId(caseStore.getCompanyId()); + + } else { + + CaseCompany caseCompany = wrapCompany(importPO); + users.setCompanyName(caseCompany.getCompanyName()); + users.setCompanyCode(caseCompany.getCompanyId()); + users.setCompanyId(caseCompany.getId()); + } + users.setRole(role); + users.setMobile(importPO.getMobile()); + users.setUserName(importPO.getUserName()); + users.setUserNo(importPO.getUserNo()); + + return users; + } + + public CaseUsers detail(JSONObject params) { + + Integer userId = params.getInteger("userId"); + return caseUsersMapper.selectByPrimaryKey(userId); + } + + public void delete(JSONObject params) { + + Integer userId = params.getInteger("userId"); + CaseUsers caseUsers = caseUsersMapper.selectByPrimaryKey(userId); + caseUsers.setState(Constants.DISABLE); + caseUsersMapper.updateByPrimaryKey(caseUsers); + } + + /** + * @param params + * @return + */ + public String export(JSONObject params) { + + Integer state = params.getInteger("state"); + String key = params.getString("key"); + Integer companyId = params.getInteger("companyId"); + Integer storeId = params.getInteger("storeId"); + Condition condition = new Condition(CaseUsers.class); + Example.Criteria criteria = condition.createCriteria(); + criteria.andCondition("state=" + state); + + if (null != companyId) { + + criteria.andCondition("company_id=" + companyId); + } + + if (null != storeId) { + + criteria.andCondition("store_id=" + storeId); + } + if (null != key) { + + key = com.bsd.cases.util.StringUtils.generateLike(key); + criteria.andLike("userName", key).orLike("userNo", key); + } + + List usersList = caseUsersMapper.selectByExample(condition); + + + String[] title = {"员工姓名", "员工号", "电话", "店铺编号", "店铺编号", "店铺编号", "店铺编号", "用户类型"}; + //创建HSSF工作薄 + HSSFWorkbook workbook = new HSSFWorkbook(); + //创建一个Sheet页 + HSSFSheet sheet = workbook.createSheet(); + //创建第一行(一般是表头) + HSSFRow row0 = sheet.createRow(0); + //创建列 + HSSFCell cell = null; + + // 设置字体 + HSSFFont font = workbook.createFont(); + font.setFontName("黑体"); //字体 + font.setFontHeightInPoints((short) 12); + // 设置单元格类型 + HSSFCellStyle cellStyle = workbook.createCellStyle(); + cellStyle.setFont(font); + cellStyle.setAlignment(HorizontalAlignment.CENTER); //水平布局:居中 + cellStyle.setWrapText(true); + + //设置表头 + for (int i = 0; i < title.length; i++) { + + cell = row0.createCell(i); + cell.setCellStyle(cellStyle); + cell.setCellValue(title[i]); + } + + //填充20行数据 + for (int i = 0; i < usersList.size(); i++) { + + CaseUsers users = usersList.get(i); + HSSFRow row = sheet.createRow(i + 1); + HSSFCell cell1 = row.createCell(0); + cell1.setCellStyle(cellStyle); + cell1.setCellValue(i + 1); + + HSSFCell cell2 = row.createCell(1); + cell2.setCellStyle(cellStyle); + cell2.setCellValue(users.getUserName()); + + HSSFCell cell3 = row.createCell(2); + cell3.setCellStyle(cellStyle); + cell3.setCellValue(users.getUserNo()); + + HSSFCell cell4 = row.createCell(3); + cell4.setCellStyle(cellStyle); + cell4.setCellValue(users.getStoreCode()); + + HSSFCell cell5 = row.createCell(4); + cell5.setCellStyle(cellStyle); + cell5.setCellValue(users.getStoreName()); + + HSSFCell cell6 = row.createCell(5); + cell6.setCellStyle(cellStyle); + cell6.setCellValue(users.getCompanyCode()); + + HSSFCell cell7 = row.createCell(6); + cell7.setCellStyle(cellStyle); + cell7.setCellValue(users.getCompanyName()); + + HSSFCell cell8 = row.createCell(7); + cell8.setCellStyle(cellStyle); + + int role = users.getRole(); + + switch (role) { + + case Constants.MOFANG_USER: + + cell8.setCellValue("店铺用户"); + break; + case Constants.WECHAT_USER: + + cell8.setCellValue("微信用户"); + break; + case Constants.HEAD_USER: + + cell8.setCellValue("总部用户"); + break; + case Constants.COMPANY_USER: + + cell8.setCellValue("店铺用户"); + break; + default: + break; + } + } + + sheet.autoSizeColumn((short) 0); + sheet.autoSizeColumn((short) 1); + sheet.autoSizeColumn((short) 2); + sheet.autoSizeColumn((short) 3); + sheet.autoSizeColumn((short) 4); + sheet.autoSizeColumn((short) 5); + sheet.autoSizeColumn((short) 6); + sheet.autoSizeColumn((short) 7); + + String fileName = System.currentTimeMillis() + ".xls"; + String absPath = exportPath + fileName; + String url = exportUrl + fileName; + //保存到本地 + File file = new File(absPath); + FileOutputStream outputStream = null; + try { + outputStream = new FileOutputStream(file); + workbook.write(outputStream); + outputStream.flush(); + outputStream.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + //将Excel写入输出流中 + return url; + } +} diff --git a/src/main/java/com/bsd/cases/util/DateUtils.java b/src/main/java/com/bsd/cases/util/DateUtils.java index 913cfda..e70dfad 100644 --- a/src/main/java/com/bsd/cases/util/DateUtils.java +++ b/src/main/java/com/bsd/cases/util/DateUtils.java @@ -88,6 +88,18 @@ public class DateUtils { return dateFormat.format(date); } + public static String curDateTimeString() { + + Date date = Calendar.getInstance().getTime(); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return df.format(date); + } + + public static Date curDateTime() { + + return Calendar.getInstance().getTime(); + } + public static void main(String[] args) { diff --git a/src/main/java/com/bsd/cases/util/StringUtils.java b/src/main/java/com/bsd/cases/util/StringUtils.java new file mode 100644 index 0000000..fe56516 --- /dev/null +++ b/src/main/java/com/bsd/cases/util/StringUtils.java @@ -0,0 +1,12 @@ +package com.bsd.cases.util; + +public class StringUtils { + + + public static String generateLike(String key) { + + return new StringBuilder("%").append(key).append("%").toString(); + } + + +} diff --git a/src/main/java/com/bsd/cases/util/WechatAccessUtils.java b/src/main/java/com/bsd/cases/util/WechatAccessUtils.java new file mode 100644 index 0000000..f3e0848 --- /dev/null +++ b/src/main/java/com/bsd/cases/util/WechatAccessUtils.java @@ -0,0 +1,176 @@ +package com.bsd.cases.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.util.Random; +import java.util.UUID; + +/** + * Created by ThinkPad on 2016/7/13. + */ +public class WechatAccessUtils { + + /** + * 微信 + */ + public static final String APPID = "wxe636fa842e12a619"; + public static final String SECRET = "30d1ea3ad012d7e07ad4e6a0190b2d50"; + + public static final String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token"; + public static final String GET_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket"; + + /** + * generate random string for wechat config + * + * @param length length of random string + * @return + */ + public static String getRandomString(int length) { + + String base = "abcdefghijklmnopqrstuvwxyz0123456789"; + + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + + for (int i = 0; i < length; i++) { + + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + + return sb.toString(); + } + + private static String getJsapiTicket() { + + + String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?"; + String params = "grant_type=client_credential&appid=" + APPID + "&secret=" + SECRET + ""; + String result = HttpRequestUtils.sendGet(requestUrl + params); + String access_token = JSONObject.parseObject(result).getString("access_token"); + requestUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?"; + params = "access_token=" + access_token + "&type=jsapi"; + result = HttpRequestUtils.sendGet(requestUrl + params); + String jsapi_ticket = JSONObject.parseObject(result).getString("ticket"); + int activeTime = Integer.parseInt(JSONObject.parseObject(result).getString("expires_in")); + return jsapi_ticket; + } + + /** + * 获取token + */ + public static String accessToken() { + + //redis中获取 + //如果获取的为空那么请求wechat + String token = HttpRequestUtils.sendGet(GET_ACCESS_TOKEN_URL, "grant_type=client_credential&appid=" + APPID + "&secret=" + SECRET); + JSONObject jsonObject = JSON.parseObject(token); + String string = (String) jsonObject.get("access_token"); + return string; + } + + public static String userInfor(String code) { + + String openIdUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxe636fa842e12a619&secret=30d1ea3ad012d7e07ad4e6a0190b2d50&code=" + code + "&grant_type=authorization_code"; + String openIdString = HttpRequestUtils.sendGet(openIdUrl); + JSONObject jsonObject = JSON.parseObject(openIdString); + String string = jsonObject.getString("access_token"); + String openId = jsonObject.getString("openid"); + String result = HttpRequestUtils.sendGet("https://api.weixin.qq.com/sns/userinfo?access_token=" + string + "&openid=" + openId + "&lang=zh_CN"); + return result; + } + + + public static void main(String[] args) throws UnsupportedEncodingException { + +// String json = "{\"openid\":\"oclE4xBC8O92tHHO0Hv5g9XOngp4\",\"nickname\":\"朱姚姚\",\"sex\":1,\"language\":\"zh_CN\",\"city\":\"\",\"province\":\"上海\",\"country\":\"中国\",\"headimgurl\":\"http:\\/\\/thirdwx.qlogo.cn\\/mmopen\\/vi_32\\/Q0j4TwGTfTLEtAN5k3v81rbmoPPicymGPMNCPVybJJvv9d8bpx0LYMFG55AHLjr3sWTU2YjROFsvgvWwAMeARkg\\/132\",\"privilege\":[],\"unionid\":\"o15urwhxT44muqRacFs9P3nL9z6A\"}"; +// JSONObject obj = JSONObject.parseObject(json); +// System.out.println(obj.getString("openid")); +// System.out.println(obj.getString("nickname")); +// System.out.println(obj.getString("headimgurl")); + + String result = HttpRequestUtils.sendGet("http://pro.kiisoo.com/retail-app/open/token?appid=wxe636fa842e12a619&secret=30d1ea3ad012d7e07ad4e6a0190b2d50"); + String ticket = JSONObject.parseObject(result).getJSONObject("results").get("ticket").toString(); + System.out.println(ticket); + } + + + public static JSONObject share(String url) throws Exception { + + long timestamp = System.currentTimeMillis() / 1000; + String nonceStr = UUID.randomUUID().toString(); + + String result = HttpRequestUtils.sendGet("http://pro.kiisoo.com/retail-app/open/token?appid=wxe636fa842e12a619&secret=30d1ea3ad012d7e07ad4e6a0190b2d50"); + String ticket = JSONObject.parseObject(result).getJSONObject("results").get("ticket").toString(); + String signature = getSignature( + ticket, nonceStr, timestamp, + url); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("appid", APPID); + jsonObject.put("timestamp", timestamp); + jsonObject.put("nonceStr", nonceStr); + jsonObject.put("signature", signature); + return jsonObject; + } + + + /** + * 获得分享链接的签名。 + * + * @param ticket + * @param nonceStr + * @param timeStamp + * @param url + * @return + * @throws Exception + */ + public static String getSignature(String ticket, String nonceStr, long timeStamp, String url) throws Exception { + String sKey = "jsapi_ticket=" + ticket + + "&noncestr=" + nonceStr + "×tamp=" + timeStamp + + "&url=" + url; + return getSignature(sKey); + } + + + /** + * 验证签名 + * + * @return + */ + public static String getSignature(String sKey) throws Exception { + String ciphertext = null; + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] digest = md.digest(sKey.toString().getBytes()); + ciphertext = byteToStr(digest); + return ciphertext.toLowerCase(); + } + + /** + * 将字节数组转换为十六进制字符串 + * + * @param byteArray + * @return + */ + private static String byteToStr(byte[] byteArray) { + String strDigest = ""; + for (int i = 0; i < byteArray.length; i++) { + strDigest += byteToHexStr(byteArray[i]); + } + return strDigest; + } + + + private static String byteToHexStr(byte mByte) { + char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + char[] tempArr = new char[2]; + tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; + tempArr[1] = Digit[mByte & 0X0F]; + + String s = new String(tempArr); + return s; + } + +}