package com.stylefeng.guns.modular.system.controller.general; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.base.tips.ErrorTip; import com.stylefeng.guns.core.beetl.ShiroExtUtil; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.log.LogObjectHolder; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.EnterpriseUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.*; /** * 分公司管理控制器 * * @author fengshuonan * @Date 2020-06-06 09:15:48 */ @Controller @RequestMapping("/tCompany") public class TCompanyController extends BaseController { private String PREFIX = "/system/tCompany/"; @Autowired private ITCompanyService tCompanyService; @Autowired private ITRegionService tRegionService; @Autowired private IUserService userService; @Autowired private ITTaxiCardService cardService; @Autowired private ITCompanyCityService tCompanyCityService; @Autowired private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; @Autowired private ISpellOrderRuleService spellOrderRuleService; @Autowired private ShiroExtUtil shiroExtUtil; @Value("${pushMinistryOfTransport}") private boolean pushMinistryOfTransport; /** * 跳转到修改平台信息 */ @RequestMapping("/admin_update") public String tCompanyUpdate(Model model) { ShiroUser user1 = shiroExtUtil.getUser(); TCompany tCompany = tCompanyService.selectById(user1.getObjectId()); model.addAttribute("item",tCompany); LogObjectHolder.me().set(tCompany); //省 List provinceList = tRegionService.selectList(new EntityWrapper().eq("parent_id", 0)); model.addAttribute("provinceList",provinceList); //系统用户对象 User user = userService.selectById(user1.getId()); model.addAttribute("user",user); //经营区域 List> scopeList = tCompanyService.getCompanyScopeById(tCompany.getId()); model.addAttribute("scopeList",scopeList); //传递当前用户角色类型,用于控制非平台账号禁用经营业务和经营区域编辑 model.addAttribute("roleType", user1.getRoleType()); return PREFIX + "platformEdit.html"; } /** * 跳转到分公司管理首页 */ @RequestMapping("") public String index() { return PREFIX + "tCompany.html"; } /** * 跳转到加盟商管理首页 */ @RequestMapping("/franchisee") public String franchisee() { return PREFIX + "franchisee.html"; } /** * 跳转到添加分公司管理 */ @RequestMapping("/tCompany_add") public String tCompanyAdd(Model model) { List provinceList = tRegionService.selectList(new EntityWrapper().eq("parent_id", 0)); model.addAttribute("provinceList",provinceList); return PREFIX + "tCompany_add.html"; } /** * 跳转到添加加盟商司管理 */ @RequestMapping("/tCompany_addFranchisee") public String tCompany_addFranchisee(Model model) { Integer roleType = shiroExtUtil.getUser().getRoleType(); if (1 == roleType){ //查询分公司 List companyList = tCompanyService.selectList(new EntityWrapper().eq("type", 2)); model.addAttribute("companyList",companyList); }else if (2 == roleType){ TCompany tCompany = tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()); model.addAttribute("company",tCompany); } model.addAttribute("roleType",roleType); return PREFIX + "tCompany_addFranchisee.html"; } /** * 跳转到查看分公司详情 */ @RequestMapping("/tCompany_detail/{tCompanyId}") public String tCompany_detail(@PathVariable Integer tCompanyId, Model model) { TCompany tCompany = tCompanyService.selectById(tCompanyId); model.addAttribute("item",tCompany); LogObjectHolder.me().set(tCompany); //省 List provinceList = tRegionService.selectList(new EntityWrapper().eq("parent_id", 0)); model.addAttribute("provinceList",provinceList); //系统用户对象 User user = userService.selectOne(new EntityWrapper().eq("roleType", 2).eq("objectId", tCompanyId)); model.addAttribute("user",user); //经营区域 List> scopeList = tCompanyService.getCompanyScopeById(tCompanyId); model.addAttribute("scopeList",scopeList); return PREFIX + "tCompany_detail.html"; } /** * 跳转到修改分公司管理 */ @RequestMapping("/tCompany_update/{tCompanyId}") public String tCompanyUpdate(@PathVariable Integer tCompanyId, Model model) { TCompany tCompany = tCompanyService.selectById(tCompanyId); model.addAttribute("item",tCompany); LogObjectHolder.me().set(tCompany); //省 List provinceList = tRegionService.selectList(new EntityWrapper().eq("parent_id", 0)); model.addAttribute("provinceList",provinceList); //系统用户对象 User user = userService.selectOne(new EntityWrapper().eq("roleType", 2).eq("objectId", tCompanyId)); model.addAttribute("user",user); //经营区域 List> scopeList = tCompanyService.getCompanyScopeById(tCompanyId); model.addAttribute("scopeList",scopeList); // 传递当前用户角色类型,用于控制非平台账号禁用经营业务和经营区域编辑 model.addAttribute("roleType", shiroExtUtil.getUser().getRoleType()); return PREFIX + "tCompany_edit.html"; } /** * 跳转到查看加盟商 */ @RequestMapping("/tCompany_detailFranchisee/{tCompanyId}") public String tCompany_detailFranchisee(@PathVariable Integer tCompanyId, Model model) { TCompany tCompany = tCompanyService.selectById(tCompanyId); model.addAttribute("item", tCompany); LogObjectHolder.me().set(tCompany); Integer roleType = shiroExtUtil.getUser().getRoleType(); model.addAttribute("roleType", roleType); TCompany obj = tCompanyService.selectById(tCompany.getSuperiorId()); if (SinataUtil.isNotEmpty(obj)) { model.addAttribute("companyName", obj.getName()); } else { model.addAttribute("companyName", "平台"); } //系统用户对象 User user = userService.selectOne(new EntityWrapper().eq("roleType", 3).eq("objectId", tCompanyId)); model.addAttribute("user", user); return PREFIX + "tCompany_detailFranchisee.html"; } /** * 跳转到修改分公司管理 */ @RequestMapping("/tCompany_updateFranchisee/{tCompanyId}") public String tCompany_updateFranchisee(@PathVariable Integer tCompanyId, Model model) { TCompany tCompany = tCompanyService.selectById(tCompanyId); model.addAttribute("item", tCompany); LogObjectHolder.me().set(tCompany); Integer roleType = shiroExtUtil.getUser().getRoleType(); if (1 == roleType) { //查询分公司 List companyList = tCompanyService.selectList(new EntityWrapper().eq("type", 2)); model.addAttribute("companyList", companyList); } else if (2 == roleType) { TCompany obj = tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()); model.addAttribute("company", obj); } model.addAttribute("roleType", roleType); //系统用户对象 User user = userService.selectOne(new EntityWrapper().eq("roleType", 3).eq("objectId", tCompanyId)); model.addAttribute("user", user); return PREFIX + "tCompany_updateFranchisee.html"; } @RequestMapping(value = "/change") @ResponseBody public Object change(@RequestParam Integer code) { List list = new ArrayList<>(); if (SinataUtil.isNotEmpty(code)){ TRegion region = tRegionService.selectOne(new EntityWrapper().eq("code", code)); list = tRegionService.selectList(new EntityWrapper().eq("parent_id", region.getId())); } return list; } //// 移除经营区域时校验 @RequestMapping(value = "/searchArea") @ResponseBody public Object searchArea(Integer companyId, Integer id) { List list = cardService.selectList(new EntityWrapper().eq("companyId",companyId)); for (TTaxiCard tTaxiCard : list) { if (ToolUtil.isNotEmpty(tTaxiCard.getCompanyCityId())){ String[] arr = tTaxiCard.getCompanyCityId().split(";"); for (String s : arr) { if (s.equals(id.toString())){ return "该区域正被打车卡使用,不允许移除"; } } } } return SUCCESS_TIP; } /** * 获取分公司管理列表 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String insertTime, String name, String principalName, String principalPhone, String adminName, String adminPhone, String serviceStr, Integer state) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(tCompanyService.getCompanyList(page,beginTime,endTime,name,principalName,principalPhone,adminName,adminPhone,serviceStr,state)); return super.packForBT(page); } /** * 获取分公司管理列表 */ @RequestMapping(value = "/listFranchisee") @ResponseBody public Object listFranchisee(String insertTime, String name, String account, String principalName, String principalPhone, String serviceStr, Integer state) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)) { String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); if (shiroExtUtil.getUser().getRoleType() == 3) { page.setRecords(null); } else { page.setRecords(tCompanyService.getFranchiseeList(page, beginTime, endTime, name, account, principalName, principalPhone, serviceStr, state, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId())); } return super.packForBT(page); } /** * 新增分公司管理 */ @RequestMapping(value = "/add") @ResponseBody public Object add(TCompany tCompany,@RequestParam String subArr,String account,String password) { String name = tCompany.getName(); name = name.replaceAll("& lt;", "<"); name = name.replaceAll("& gt;", ">"); name = name.replaceAll("& #40;", "("); name = name.replaceAll("& #41;", ")"); tCompany.setName(name); //判断账号是否已存在 int count = userService.selectCount(new EntityWrapper().eq("account", account)); if (count > 0) { return "error"; } if(ToolUtil.isEmpty(tCompany.getIdentifier())){ return "统一社会信用代码不能为空"; } //调用中台接口创建企业 CheckEnterExist checkEnterExist = EnterpriseUtil.checkEnterExistByEnterIdCardNo(tCompany.getIdentifier()); String enterCode = ""; Integer enterNew = null; Long empId = null; Integer empnew = null; //企业未注册,进行注册 if (null == checkEnterExist || "0".equals(checkEnterExist.getIsReg())) { CreateEnterpriseRequest request = new CreateEnterpriseRequest(); request.setName(tCompany.getName()); request.setNickName(tCompany.getName()); request.setUscc(tCompany.getIdentifier()); request.setIndustry_code("292"); request.setMobile(account); CreateEnterprise enterprise = EnterpriseUtil.createEnterprise(request); enterCode = enterprise.getIdCode(); enterNew = 1; List userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); if(null != userInfoByPhone && userInfoByPhone.size() > 0){ empId = userInfoByPhone.get(0).getEmpId(); empnew = 0; }else{ empId = 0L; empnew = 1; } } //企业已注册 if (null != checkEnterExist && "1".equals(checkEnterExist.getIsReg())) { enterCode = checkEnterExist.getEnterCode(); enterNew = 0; List userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); if(null == userInfoByPhone ||userInfoByPhone.size() == 0){ //负责人不匹配,则创建新的员工到中台 SaveStaffNodeRequest request = new SaveStaffNodeRequest(); request.setMobile(checkEnterExist.getMobile()); request.setEntercode(enterCode); request.setEmpName(tCompany.getName() + "管理员"); request.setEmpNickname(tCompany.getName() + "管理员"); request.setLoginNo(account); request.setEmpSex("男"); request.setMphone(account); request.setEmail(account + "@qyt.com"); request.setDeptId(0); request.setPositionId(1); request.setSuperLevel(0); request.setHideMobile(0); ResultUtil resultUtil = EmployeeUtil.saveStaffNode(request); if(200 != resultUtil.getStatus()){ return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); } SaveStaffNode saveStaffNode = resultUtil.getData(); empId = saveStaffNode.getEmpId(); empnew = 1; }else{ empId = userInfoByPhone.get(0).getEmpId(); empnew = 0; } } tCompany.setEnterCode(enterCode); tCompany.setEnterNew(enterNew); tCompany.setType(2); //2:分公司 tCompany.setState(0); //0:正常 tCompany.setFlag("1"); tCompany.setInsertTime(new Date()); tCompany.setUpdateTime(new Date()); tCompanyService.insert(tCompany); // 添加拼单设置 SpellOrderRule spellOrderRule = new SpellOrderRule(); spellOrderRule.setCompanyId(tCompany.getId()); spellOrderRuleService.insert(spellOrderRule); //添加User对象 User user = new User(); user.setAccount(account); user.setPhone(account); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(password, user.getSalt())); user.setRoleid("2"); user.setDeptid(25); user.setStatus(1); user.setCreatetime(new Date()); user.setRoleType(2); user.setObjectId(tCompany.getId()); user.setName(tCompany.getName()); user.setSex(1); user.setEmpId(empId); user.setEntercode(enterCode); user.setEnterId(Long.valueOf(enterCode)); user.setEmpnew(empnew); userService.insert(user); //编写异步延迟处理中台账号延迟创建的问题 if(0 == empId){ Timer timer = new Timer(); String finalEnterCode = enterCode; timer.schedule(new TimerTask() { @Override public void run() { List userInfoByPhone = UserUtil.getUserInfoByPhone(account, finalEnterCode); if(null != userInfoByPhone && userInfoByPhone.size() > 0){ Long empId1 = userInfoByPhone.get(0).getEmpId(); user.setEmpId(empId1); userService.updateById(user); } } },120*1000); } //添加经营区域 addSocpe(subArr, tCompany.getId()); return SUCCESS_TIP; } //添加经营区域 public void addSocpe(String subArr,Integer id){ JSONArray jsonArray = JSON.parseArray(subArr); List integers = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); integers.add(jsonObject.getInteger("recordId")); } tCompanyCityService.delete(new EntityWrapper().eq("companyId", id).notIn("id",integers)); int size = jsonArray.size(); for (int i = 0; i < size; i++){ JSONObject jsonObject = jsonArray.getJSONObject(i); TCompanyCity tCompanyCity = tCompanyCityService.selectOne(new EntityWrapper().eq("id", jsonObject.getInteger("recordId")).eq("companyId", id)); if (SinataUtil.isEmpty(tCompanyCity)){ tCompanyCity = new TCompanyCity(); tCompanyCity.setProvinceCode(jsonObject.getInteger("provinceCode")); tCompanyCity.setCityCode(jsonObject.getInteger("cityCode")); tCompanyCity.setAreaCode(jsonObject.getInteger("areaCode")); tCompanyCity.setCompanyId(id); tCompanyCity.setState(1); tCompanyCityService.insert(tCompanyCity); }else{ tCompanyCity.setProvinceCode(jsonObject.getInteger("provinceCode")); tCompanyCity.setCityCode(jsonObject.getInteger("cityCode")); tCompanyCity.setAreaCode(jsonObject.getInteger("areaCode")); tCompanyCityService.updateById(tCompanyCity); } } } /** * 删除分公司管理 */ @RequestMapping(value = "/delete") @ResponseBody public Object delete(@RequestParam Integer tCompanyId) { TCompany tCompany = tCompanyService.selectById(tCompanyId); //调用中台接口创建企业 if(1 == tCompany.getEnterNew()){ CheckEnterExist checkEnterExist = EnterpriseUtil.checkEnterExistByEnterIdCardNo(tCompany.getIdentifier()); if (null != checkEnterExist && "1".equals(checkEnterExist.getIsReg())) { ShiroUser user1 = shiroExtUtil.getUser(); User user = userService.selectById(user1.getId()); ResultUtil resultUtil = EnterpriseUtil.delEnterprise(checkEnterExist.getEnterCode(), user.getPhone()); if(resultUtil.getStatus() != 200){ return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); } } } tCompany.setFlag("3"); tCompanyService.updateById(tCompany); return SUCCESS_TIP; } /** * 修改分公司管理 */ @RequestMapping(value = "/update") @ResponseBody public Object update(TCompany tCompany,@RequestParam String subArr,String account,String password,Integer userId) { String name = tCompany.getName(); name = name.replaceAll("& lt;", "<"); name = name.replaceAll("& gt;", ">"); name = name.replaceAll("& #40;", "("); name = name.replaceAll("& #41;", ")"); tCompany.setName(name); User user = userService.selectById(userId); if(null != user && ToolUtil.isNotEmpty(password)){ user.setPassword(ShiroKit.md5(password, user.getSalt())); userService.updateById(user); } tCompany.setUpdateTime(new Date()); tCompanyService.updateById(tCompany); //添加经营区域 addSocpe(subArr, tCompany.getId()); TCompany tCompany1 = tCompanyService.selectById(tCompany.getId()); if (tCompany1.getType() == 1) { new Thread(new Runnable() { @Override public void run() { if (pushMinistryOfTransport) {//上传平台数据 pushMinistryOfTransportUtil.baseInfoCompanyPay();//上传网约车平台公司支付信息 pushMinistryOfTransportUtil.baseInfoCompany(tCompany.getId()); pushMinistryOfTransportUtil.baseInfoCompanyService(); pushMinistryOfTransportUtil.baseInfoCompanyPermit(tCompany.getId()); } } }).start(); } return SUCCESS_TIP; } /** * 修改加盟商管理 */ @RequestMapping(value = "/updateFranchisee") @ResponseBody public Object updateFranchisee(TCompany tCompany,String account,String password,Integer userId) { String name = tCompany.getName(); name = name.replaceAll("& lt;", "<"); name = name.replaceAll("& gt;", ">"); name = name.replaceAll("& #40;", "("); name = name.replaceAll("& #41;", ")"); tCompany.setName(name); tCompany.setUpdateTime(new Date()); // tCompany.setVersion(tCompany.getVersion() + 1); tCompanyService.updateById(tCompany); //修改账号密码 User user = userService.selectById(userId); user.setPassword(ShiroKit.md5(password, user.getSalt())); userService.updateById(user); return SUCCESS_TIP; } /** * 新增加盟商管理 */ @RequestMapping(value = "/addFranchisee") @ResponseBody public Object addFranchisee(TCompany tCompany,String account,String password) { String name = tCompany.getName(); name = name.replaceAll("& lt;", "<"); name = name.replaceAll("& gt;", ">"); name = name.replaceAll("& #40;", "("); name = name.replaceAll("& #41;", ")"); tCompany.setName(name); //判断账号是否已存在 int count = userService.selectCount(new EntityWrapper().eq("account", account)); if (count > 0) { return "error"; } if(ToolUtil.isEmpty(tCompany.getIdentifier())){ return "统一社会信用代码不能为空"; } //调用中台接口创建企业 CheckEnterExist checkEnterExist = EnterpriseUtil.checkEnterExistByEnterIdCardNo(tCompany.getIdentifier()); String enterCode = ""; Long empId = null; Integer empnew = null; Integer enterNew = null; ShiroUser user1 = shiroExtUtil.getUser(); User user2 = userService.selectById(user1.getId()); //企业未注册,进行注册 if (null == checkEnterExist || "0".equals(checkEnterExist.getIsReg())) { CreateEnterpriseRequest request = new CreateEnterpriseRequest(); request.setName(tCompany.getName()); request.setNickName(tCompany.getName()); request.setUscc(tCompany.getIdentifier()); request.setIndustry_code("292"); request.setMobile(account); CreateEnterprise enterprise = EnterpriseUtil.createEnterprise(request); enterCode = enterprise.getIdCode(); enterNew = 1; List userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); if(null != userInfoByPhone && userInfoByPhone.size() > 0){ empId = userInfoByPhone.get(0).getEmpId(); empnew = 0; }else{ empId = 0L; empnew = 1; } } //企业已注册 if (null != checkEnterExist && "1".equals(checkEnterExist.getIsReg())) { enterCode = checkEnterExist.getEnterCode(); List userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); enterNew = 0; if(null == userInfoByPhone || userInfoByPhone.size() == 0){ SaveStaffNodeRequest request = new SaveStaffNodeRequest(); request.setMobile(checkEnterExist.getMobile()); request.setEntercode(enterCode); request.setEmpName(tCompany.getName() + "管理员"); request.setEmpNickname(tCompany.getName() + "管理员"); request.setLoginNo(account); request.setEmpSex("女"); request.setMphone(account); request.setEmail(account + "@qyt.com"); request.setDeptId(0); request.setPositionId(1); request.setSuperLevel(0); request.setHideMobile(0); ResultUtil resultUtil = EmployeeUtil.saveStaffNode(request); if(200 != resultUtil.getStatus()){ return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); } SaveStaffNode saveStaffNode = resultUtil.getData(); empId = saveStaffNode.getEmpId(); empnew = 1; }else{ empId = userInfoByPhone.get(0).getEmpId(); empnew = 0; } } tCompany.setEnterCode(enterCode); tCompany.setEnterNew(enterNew); tCompany.setType(3); //2:分公司 if (shiroExtUtil.getUser().getRoleType() == 2) { tCompany.setSuperiorId(shiroExtUtil.getUser().getObjectId()); } tCompany.setState(0); //0:正常 tCompany.setFlag("1"); tCompany.setInsertTime(new Date()); tCompanyService.insert(tCompany); //添加User对象 User user = new User(); user.setAccount(account); user.setPhone(account); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(password, user.getSalt())); user.setRoleid("3"); user.setDeptid(26); user.setStatus(1); user.setCreatetime(new Date()); user.setRoleType(3); user.setObjectId(tCompany.getId()); user.setName(tCompany.getName()); user.setSex(1); user.setEmpId(empId); user.setEntercode(enterCode); user.setEnterId(Long.valueOf(enterCode)); user.setEmpnew(empnew); userService.insert(user); //编写异步延迟处理中台账号延迟创建的问题 if(0 == empId){ Timer timer = new Timer(); String finalEnterCode = enterCode; timer.schedule(new TimerTask() { @Override public void run() { List userInfoByPhone = UserUtil.getUserInfoByPhone(account, finalEnterCode); if(null != userInfoByPhone && userInfoByPhone.size() > 0){ Long empId1 = userInfoByPhone.get(0).getEmpId(); user.setEmpId(empId1); userService.updateById(user); } } },120*1000); } return SUCCESS_TIP; } }