From 9594f5c7ce28076480cc742eb21d195606c5f0e4 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Wed, 24 Oct 2018 17:16:10 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=95=86=E6=88=B7=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxMerchantController.java | 49 +++- .../iformall/service/WxMerchantService.java | 11 + .../service/impl/WxMerchantServiceImpl.java | 216 ++++++++++++++++-- 3 files changed, 252 insertions(+), 24 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java index b27eaba51..cf2a6e801 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java @@ -41,20 +41,9 @@ public class WxMerchantController extends BaseController { return new ResultData(page); } - @ApiOperation("ETCP商户列表") - @GetMapping("etcplist") - public ResultData etcpList(@ModelAttribute WxMerchant wxMerchant) { - if (null == wxMerchant) wxMerchant = new WxMerchant(); - wxMerchant.setTenantId(getTenantId()); - final List merchantList = wxMerchantService.etcpList(wxMerchant); - return new ResultData(merchantList); - } - @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxMerchant wxMerchant) { - //Assert.notNull(wxMerchant.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxMerchant.setTenantId(getTenantId()); wxMerchantService.saveOrUpdate(wxMerchant); return new ResultData(); @@ -67,6 +56,15 @@ public class WxMerchantController extends BaseController { return new ResultData(); } + @ApiOperation("ETCP商户列表") + @GetMapping("etcplist") + public ResultData etcpList(@ModelAttribute WxMerchant wxMerchant) { + if (null == wxMerchant) wxMerchant = new WxMerchant(); + wxMerchant.setTenantId(getTenantId()); + final List merchantList = wxMerchantService.etcpList(wxMerchant); + return new ResultData(merchantList); + } + @ApiOperation("根据id删除接口") @GetMapping("/del") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) @@ -100,4 +98,33 @@ public class WxMerchantController extends BaseController { return new ResultData(Result.SUCCESS, "停用成功"); } + @ApiOperation("新增商户接口") + @PostMapping("addMerchant") + public ResultData addMerchant(@RequestBody WxMerchant wxMerchant) { + wxMerchant.setTenantId(getTenantId()); + return wxMerchantService.addMerchant(wxMerchant); + } + + @ApiOperation("更新商户接口") + @PostMapping("updateMerchant") + public ResultData updateMerchant(@RequestBody WxMerchant wxMerchant) { + wxMerchant.setTenantId(getTenantId()); + return wxMerchantService.updateMerchant(wxMerchant); + } + + @ApiOperation("更新账户接口") + @PostMapping("updateMerchantAccount") + public ResultData updateMerchantAccount(@RequestBody WxMerchant wxMerchant) { + wxMerchant.setTenantId(getTenantId()); + return wxMerchantService.updateMerchantAccount(wxMerchant); + } + + @ApiOperation("更新管理员接口") + @PostMapping("updateMerchantAdmin") + public ResultData updateMerchantAdmin(@RequestBody WxMerchant wxMerchant) { + wxMerchant.setTenantId(getTenantId()); + return wxMerchantService.updateMerchantAdmin(wxMerchant); + } + + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index 5a48ae025..7478e9297 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -1,10 +1,14 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; import com.iformall.domain.po.WxMerchant; import java.util.List; +/** + * @author gongbiao + */ public interface WxMerchantService { /** @@ -50,4 +54,11 @@ public interface WxMerchantService { void disable(Long id); + ResultData addMerchant(WxMerchant wxMerchant); + + ResultData updateMerchant(WxMerchant wxMerchant); + + ResultData updateMerchantAccount(WxMerchant wxMerchant); + + ResultData updateMerchantAdmin(WxMerchant wxMerchant); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index b5c1f7604..026d8db36 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -4,6 +4,8 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; +import com.iformall.common.Result; +import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.enums.*; import com.iformall.exception.MallinkException; @@ -65,7 +67,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { public PageInfo listAsPage(WxMerchant record, Integer pageIndex, Integer pageSize) { - WxRentContract wxRentContract = new WxRentContract(); wxRentContract.setTenantId(record.getTenantId()); List list = wxRentContractMapper.findList(wxRentContract); @@ -73,8 +74,8 @@ public class WxMerchantServiceImpl implements WxMerchantService { PageHelper.startPage(pageIndex, pageSize); List merchants = wxMerchantMapper.findList(record); for (WxMerchant merchant : merchants) { - List collect = list.stream().filter(ms -> ms.getMerchantId()!=null && ms.getMerchantId().equals(merchant.getId()) - && !ms.getStatus().equals(EnumRentContractStatus.WAIT_SIGN.getCode()) + List collect = list.stream().filter(ms -> ms.getMerchantId() != null && ms.getMerchantId().equals(merchant.getId()) + && !ms.getStatus().equals(EnumRentContractStatus.WAIT_SIGN.getCode()) && !ms.getStatus().equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode())).collect(Collectors.toList()); if (collect != null && collect.size() > 0) { merchant.setRentalStartDate(collect.get(0).getRentalStartDate()); @@ -122,7 +123,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { //分账信息 WxProfitSharingReceiver receiver = wxProfitSharingReceiverService.findReceiver(wxMerchant); - if(receiver!=null){ + if (receiver != null) { wxMerchant.setAccountId(receiver.getReceiverAccount()); wxMerchant.setAccountName(receiver.getTrueName()); wxMerchant.setAccountTypeValue(receiver.getReceiverType()); @@ -157,11 +158,10 @@ public class WxMerchantServiceImpl implements WxMerchantService { for (WxMerchantShop merchantShop : wxMerchantShopList) { merchantShop.setIsDel(EnumDelStatus.DEL.getCode()); wxMerchantShopMapper.updateByPrimaryKeySelective(merchantShop); - //更新商铺状态 WxShop wxShop = new WxShop(); wxShop.setId(merchantShop.getShopId()); - wxShop.setStatus(EnumShopStatus.NOT_RENT.getCode());//未出租 + wxShop.setStatus(EnumShopStatus.NOT_RENT.getCode()); wxShopMapper.updateByPrimaryKeySelective(wxShop); } @@ -185,6 +185,198 @@ public class WxMerchantServiceImpl implements WxMerchantService { } + @Transactional(rollbackFor = {Exception.class}) + @Override + public ResultData addMerchant(WxMerchant wxMerchant) { + try { + final IdWorker idWorker = IdWorker.get(); + long merchantid = idWorker.nextId(); + wxMerchant.setId(merchantid); + Date date = new Date(); + wxMerchant.setStatus(EnumMerchantStatus.VALID.getCode()); + wxMerchant.setUpdateDate(date); + wxMerchant.setCreateDate(date); + wxMerchantMapper.insertSelective(wxMerchant); + //保存商户商铺的关联 + List shopidlist = wxMerchant.getShopids(); + for (Long shopid : shopidlist) { + WxMerchantShop wxMerchantShop = new WxMerchantShop(); + wxMerchantShop.setId(idWorker.nextId()); + wxMerchantShop.setMerchantId(merchantid); + wxMerchantShop.setShopId(shopid); + wxMerchantShop.setTenantId(wxMerchant.getTenantId()); + Date shopdate = new Date(); + wxMerchantShop.setUpdateDate(shopdate); + wxMerchantShop.setCreateDate(shopdate); + wxMerchantShop.setIsDel(EnumDelStatus.NOT_DEL.getCode()); + wxMerchantShopMapper.insertSelective(wxMerchantShop); + //更新商铺状态 + WxShop wxShop = new WxShop(); + wxShop.setId(shopid); + //已出租 + wxShop.setStatus(EnumShopStatus.RENT.getCode()); + wxShopMapper.updateByPrimaryKeySelective(wxShop); + } + //关联合同 + if (wxMerchant.getRentContractId() != null) { + WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(wxMerchant.getRentContractId()); + wxRentContract.setMerchantId(merchantid); + wxRentContract.setUpdatetime(new Date()); + wxRentContract.setStatus(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()); + wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract); + //创建账单 + buildRent(wxRentContract); + //创建押金 + buildDeposit(wxMerchant); + } + return new ResultData(Result.SUCCESS, "商户创建成功", merchantid); + } catch (Exception e) { + logger.error("db failed: 商户创建失败, e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public ResultData updateMerchant(WxMerchant wxMerchant) { + + try { + if (wxMerchant.getId() == null) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + //更新商户 + Date date = new Date(); + wxMerchant.setUpdateDate(date); + wxMerchantMapper.updateByPrimaryKeySelective(wxMerchant); + WxShop wxShopP = new WxShop(); + wxShopP.setId(wxMerchant.getShopids().get(0)); + //删除当前商户关联的所有商铺然后再插入 + WxMerchantShop wxMerchantShopQuery = new WxMerchantShop(); + wxMerchantShopQuery.setTenantId(wxMerchant.getTenantId()); + wxMerchantShopQuery.setMerchantId(wxMerchant.getId() != null ? wxMerchant.getId() : 0); + List wxMerchantShopList = wxMerchantShopMapper.findList(wxMerchantShopQuery); + for (WxMerchantShop merchantShop : wxMerchantShopList) { + merchantShop.setIsDel(EnumDelStatus.DEL.getCode()); + wxMerchantShopMapper.updateByPrimaryKeySelective(merchantShop); + //更新商铺状态 + WxShop wxShop = new WxShop(); + wxShop.setId(merchantShop.getShopId()); + //未出租 + wxShop.setStatus(EnumShopStatus.NOT_RENT.getCode()); + wxShopMapper.updateByPrimaryKeySelective(wxShop); + } + //保存商户商铺的关联 + final IdWorker idWorker = IdWorker.get(); + List shopidlist = wxMerchant.getShopids(); + for (Long shopid : shopidlist) { + WxMerchantShop wxMerchantShop = new WxMerchantShop(); + wxMerchantShop.setId(idWorker.nextId()); + wxMerchantShop.setMerchantId(wxMerchant.getId()); + wxMerchantShop.setShopId(shopid); + wxMerchantShop.setTenantId(wxMerchant.getTenantId()); + Date shopdate = new Date(); + wxMerchantShop.setUpdateDate(shopdate); + wxMerchantShop.setCreateDate(shopdate); + wxMerchantShop.setRentalStartDate(wxMerchant.getRentalStartDate()); + wxMerchantShop.setRentalEndDate(wxMerchant.getRentalEndDate()); + wxMerchantShop.setIsDel(EnumDelStatus.NOT_DEL.getCode()); + wxMerchantShopMapper.insertSelective(wxMerchantShop); + //更新商铺状态 + WxShop wxShop = new WxShop(); + wxShop.setId(shopid); + wxShop.setStatus(EnumShopStatus.RENT.getCode()); + wxShopMapper.updateByPrimaryKeySelective(wxShop); + } + return new ResultData(Result.SUCCESS, "商户更新成功"); + } catch (Exception e) { + logger.error("db failed: 商户更新失败, e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public ResultData updateMerchantAccount(WxMerchant wxMerchant) { + try { + if (wxMerchant.getId() == null) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + //添加商户的分账账户(不是必选) + if (wxMerchant.getAccountId() != null && wxMerchant.getAccountName() != null + && !wxMerchant.getAccountId().isEmpty() && !wxMerchant.getAccountName().isEmpty()) { + WxProfitSharingReceiver receiver = new WxProfitSharingReceiver(); + receiver.setReceiverAccount(wxMerchant.getAccountId()); + receiver.setReceiverComments(wxMerchant.getName()); + receiver.setReceiverType(wxMerchant.getAccountTypeValue()); + receiver.setTrueName(wxMerchant.getAccountName()); + wxProfitSharingReceiverService.updateReceiver(wxMerchant, receiver); + } else { + wxProfitSharingReceiverService.delReceiver(wxMerchant); + } + return new ResultData(Result.SUCCESS, "账户操作成功"); + } catch (Exception e) { + logger.error("db failed: 账户操作失败, e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public ResultData updateMerchantAdmin(WxMerchant wxMerchant) { + try { + if (wxMerchant.getId() == null) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + WxAppinfo wxAppinfo = new WxAppinfo(); + wxAppinfo.setTenantId(wxMerchant.getTenantId()); + wxAppinfo.setType(EnumAppType.B.getCode()); + wxAppinfo = wxAppinfoMapper.findList(wxAppinfo).get(0); + List bUsers = wxMerchant.getbUsers(); + + //删除之前的关联用户 + WxMerchantBUser bUser = new WxMerchantBUser(); + bUser.setMerchantId(wxMerchant.getId() != null ? wxMerchant.getId() : 0); + List wxMerchantBUserMapperList = wxMerchantBUserMapper.findList(bUser); + for (WxMerchantBUser wxMerchantBUser : wxMerchantBUserMapperList) { + wxMerchantBUser.setStatus(EnumMerchantBUserStatus.INVALID.getCode()); + wxMerchantBUserMapper.updateByPrimaryKeySelective(wxMerchantBUser); + } + final IdWorker idWorker = IdWorker.get(); + //保存商户关联用户 + for (WxMerchantBUser user : bUsers) { + if (user.getId() == null) { + long id = idWorker.nextId(); + user.setId(id); + user.setBUserId(id); + user.setMerchantId(wxMerchant.getId()); + user.setTenantId(wxMerchant.getTenantId()); + user.setAppId(wxAppinfo.getAppId()); + Date date = new Date(); + user.setCreateDate(date); + user.setUpdateDate(date); + user.setStatus(EnumMerchantBUserStatus.VALID.getCode()); + wxMerchantBUserMapper.insertSelective(user); + } else {//有id的更新 + user.setBUserId(user.getId()); + user.setMerchantId(wxMerchant.getId()); + user.setTenantId(wxMerchant.getTenantId()); + user.setAppId(wxAppinfo.getAppId()); + Date date = new Date(); + user.setUpdateDate(date); + user.setStatus(EnumMerchantBUserStatus.VALID.getCode()); + wxMerchantBUserMapper.updateByPrimaryKeySelective(user); + } + } + return new ResultData(Result.SUCCESS, "账号操作成功"); + } catch (Exception e) { + logger.error("db failed: 账号操作失败, e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } + + @Transactional(rollbackFor = {Exception.class}) @Override public void saveOrUpdate(WxMerchant wxMerchant) { @@ -217,8 +409,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchantShop.setUpdateDate(shopdate); wxMerchantShop.setCreateDate(shopdate); wxMerchantShop.setIsDel(EnumDelStatus.NOT_DEL.getCode()); - //wxMerchantShop.setRentalStartDate(wxMerchant.getRentalStartDate()); - //wxMerchantShop.setRentalEndDate(wxMerchant.getRentalEndDate()); wxMerchantShopMapper.insertSelective(wxMerchantShop); //更新商铺状态 @@ -256,7 +446,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { } //关联合同 - if(wxMerchant.getRentContractId()!=null){ + if (wxMerchant.getRentContractId() != null) { WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(wxMerchant.getRentContractId()); wxRentContract.setMerchantId(merchantid); wxRentContract.setUpdatetime(new Date()); @@ -468,11 +658,11 @@ public class WxMerchantServiceImpl implements WxMerchantService { now.add(Calendar.MONTH, receivePeriod.intValue()); Date currenttime = now.getTime(); //当前日期加上周期后小于截止收租日就是没有到期,否则当前待缴 - if(currenttime.before(wxBillRent.getReceiveDate())){ + if (currenttime.before(wxBillRent.getReceiveDate())) { wxBillRent.setStatus(EnumBillRentStatus.NOT_EXPIRED.getCode()); wxBillRent.setExpiredDay(0L); wxBillRent.setReceiveDate(time); - }else{ + } else { wxBillRent.setStatus(EnumBillRentStatus.WAIT_PAY.getCode()); wxBillRent.setExpiredDay(0L); wxBillRent.setReceiveDate(time); @@ -486,9 +676,9 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxBillRent.setShopId(wxRentContract.getShopId()); wxBillRent.setCreatetime(date); wxBillRent.setUpdatetime(date); - try{ + try { wxBillRentMapper.insertSelective(wxBillRent); - }catch (Exception e){ + } catch (Exception e) { logger.error("添加租赁账单失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); }