收银点更改

This commit is contained in:
liuyingfang
2024-02-19 17:45:38 +08:00
parent 93ad59c289
commit ce094f50f5
12 changed files with 234 additions and 23 deletions

View File

@@ -2,25 +2,26 @@ package cn.pluss.platform.controller.merchant;
import cn.pluss.platform.api.Result;
import cn.pluss.platform.api.ResultGenerator;
import cn.pluss.platform.entity.MerchantCashPayCode;
import cn.pluss.platform.entity.MerchantCashPlace;
import cn.pluss.platform.entity.MerchantCashPlaceStaff;
import cn.pluss.platform.entity.*;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.mapper.MerchantChannelMapper;
import cn.pluss.platform.merchant.MerchantCashPlaceService;
import cn.pluss.platform.merchant.MerchantCashPlaceStaffService;
import cn.pluss.platform.vo.MerchantCashPlaceStaffVO;
import cn.pluss.platform.vo.MerchantCashPlaceVO;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
/** 收银点
* @author DJH
*/
@RestController
@@ -32,6 +33,8 @@ public class MerchantCashPlaceController {
@Setter(onMethod_ = {@Autowired})
private MerchantCashPlaceStaffService cashPlaceStaffService;
@Resource
private MerchantChannelMapper merchantChannelMapper;
@PostMapping
public Result<Object> add(@RequestBody MerchantCashPlace merchantCashPlace) {
@@ -50,6 +53,13 @@ public class MerchantCashPlaceController {
return ResultGenerator.genSuccessResult("操作成功", null);
}
/**
* (新)收银点列表
* @param current
* @param size
* @param merchantCashPlace
* @return
*/
@GetMapping("/list")
public Result<Object> list(Long current, Long size, MerchantCashPlace merchantCashPlace) {
Page<MerchantCashPlace> page = new Page<>();
@@ -59,7 +69,8 @@ public class MerchantCashPlaceController {
page.setCurrent(current);
page.setSize(size);
}
List<MerchantCashPlaceVO> result = cashPlaceService.getListForApp(page, merchantCashPlace);
// List<MerchantCashPlaceVO> result = cashPlaceService.getListForApp(page, merchantCashPlace);
List<MerchantCashPlaceVO> result = cashPlaceService.getListForBase(current.intValue(),size.intValue(), merchantCashPlace.getMerchantCode(),merchantCashPlace.getName());
return ResultGenerator.genSuccessResult(result);
}
@@ -113,4 +124,43 @@ public class MerchantCashPlaceController {
throw new MsgException("输入内容过长");
}
}
/**
* (新)增加收银点
* @return
*/
@PostMapping("/add")
public Result<Object> add(@RequestBody MerchantBaseInfo merchantBaseInfo){
//判定字符位数
if (Objects.equals(merchantBaseInfo.getAddress(), null) || Objects.equals(merchantBaseInfo.getAlias(), null)){
throw new MsgException("地址或收银点名称不能为空");
}
Boolean aBoolean = cashPlaceService.addCashPlace(merchantBaseInfo);
if (aBoolean){
return ResultGenerator.genSuccessResult("");
}
return ResultGenerator.genFailResult("增加失败");
}
/**
* 通道详情
* @return
*/
@GetMapping("/channel")
public Result<Object> channel(@RequestParam String merchantCode){
List<MerchantChannel> merchantChannels = merchantChannelMapper.selectList();
List<MerchantChannel> merchantChannelVo = cashPlaceService.merchantChannel(merchantCode, merchantChannels);
return ResultGenerator.genSuccessResult(merchantChannelVo);
}
/**
* 切换收银点
* @return
*/
@GetMapping("/cutChannel")
public Result<Object> cutChannel(@RequestParam String merchantCode,
@RequestParam String code){
cashPlaceStaffService.cutChannel(merchantCode, code);
return ResultGenerator.genSuccessResult();
}
}

View File

@@ -12,4 +12,6 @@ public interface MerchantChannelMapper extends BaseMapper<MerchantChannel> {
* @return
*/
List<Integer> selectValidIdList();
List<MerchantChannel> selectList();
}

View File

@@ -53,4 +53,6 @@ public interface MerchantChannelStatusMapper extends BaseMapper<MerchantChannelS
*/
UserNumVO getUserNumInfo(@Param("userId") Long userId, @Param("date")String date, @Param("dateType")Integer dateType);
List<merchantChannelVO> pageDate(@Param("pageSize")Integer size, @Param("offset")Integer page);
List<Integer> getChannelByMerchantCode(@Param("merchantCode") String merchantCode);
}

View File

@@ -14,5 +14,10 @@
SELECT id FROM tb_pluss_merchant_channel WHERE `status` = 1
</select>
<select id="selectList" resultType="cn.pluss.platform.entity.MerchantChannel">
SELECT id,channelName FROM tb_pluss_merchant_channel WHERE `status` = 1
</select>
</mapper>

View File

@@ -89,4 +89,7 @@
WHERE mcs.`valid` = -1
order by mcs.id desc limit #{pageSize} offset #{offset};
</select>
<select id="getChannelByMerchantCode" resultType="java.lang.Integer">
SELECT channel FROM tb_pluss_merchant_channel_status WHERE merchantCode=#{merchantCode}
</select>
</mapper>

View File

@@ -2,7 +2,6 @@ package cn.pluss.platform.entity;
import cn.pluss.platform.constants.Constant;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.util.MD5Util;
import cn.pluss.platform.util.SignUtils;
import cn.pluss.platform.util.StringUtil;
import com.alibaba.fastjson.JSON;
@@ -19,7 +18,6 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
@Data
@AllArgsConstructor
@@ -108,6 +106,16 @@ public class MerchantBaseInfo implements Serializable {
private String buslicType;
private String isVoice;
/**
* (新)多收银点主商户号
*/
@TableField("masterMerchantCode")
private String masterMerchantCode;
/**
* 通道切换标记
*/
@TableField("tab")
private Integer tab;
/**
* 是否推送微信消息0不推送 1推送
@@ -229,6 +237,9 @@ public class MerchantBaseInfo implements Serializable {
@TableField("validFlag")
private Integer validFlag;
@TableField(exist = false)
private Integer channel;
public static void setFirstAndLastTradeTime(MerchantBaseInfo mbi, Date date) {

View File

@@ -70,6 +70,9 @@ public class MerchantCashPlace implements Serializable {
@TableField("remark")
private String remark;
@TableField(exist = false)
private String merchantCode;
/**
* 创建时间

View File

@@ -2,10 +2,6 @@ package cn.pluss.platform.vo;
import cn.pluss.platform.entity.MerchantBaseInfo;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
@@ -70,4 +66,8 @@ public class MerchantCashPlaceVO implements Serializable {
* 店铺基本信息
*/
private MerchantBaseInfo merchantBaseInfo;
/**
* 切换
*/
private Integer tab;
}

View File

@@ -1,9 +1,6 @@
package cn.pluss.platform.merchant;
import cn.pluss.platform.entity.MerchantCashPayCode;
import cn.pluss.platform.entity.MerchantCashPlace;
import cn.pluss.platform.entity.MerchantOrder;
import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.entity.*;
import cn.pluss.platform.vo.MerchantCashPlaceStaffVO;
import cn.pluss.platform.vo.MerchantCashPlaceVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -27,12 +24,20 @@ public interface MerchantCashPlaceService extends IService<MerchantCashPlace> {
*/
void createDefaultCashPlace(Long userId);
List<MerchantChannel> merchantChannel(String merchantCode,List<MerchantChannel> merchantChannels);
/**
* 通过收银点编码删除
* @param code 收银台编码code
*/
void delByCodeForApp(String code);
/**
* (新)新增收银点
* @param merchantBaseInfo
*/
Boolean addCashPlace(MerchantBaseInfo merchantBaseInfo);
/**
* 查看收银点列表
* @param merchantCashPlace 收银点查询条件
@@ -40,6 +45,12 @@ public interface MerchantCashPlaceService extends IService<MerchantCashPlace> {
*/
List<MerchantCashPlaceVO> getListForApp(Page<MerchantCashPlace> page, MerchantCashPlace merchantCashPlace);
/**
* 最新查看收银点
* @return
*/
List<MerchantCashPlaceVO> getListForBase(Integer current, Integer size,String merchantCode,String name);
/**
* 收银点绑定收款码
* @param merchantCashPayCode

View File

@@ -44,6 +44,8 @@ public interface MerchantCashPlaceStaffService extends IService<MerchantCashPlac
*/
void offLineCashPlace(MerchantCashPlace cashPlace);
void cutChannel(String merchantCode,String code);
/**
* 员工收银点签退
* @param cashPlaceCode

View File

@@ -1,15 +1,13 @@
package cn.pluss.platform.merchant.impl;
import cn.hutool.core.date.DateUtil;
import cn.jiguang.common.utils.StringUtils;
import cn.pluss.platform.converter.Converter;
import cn.pluss.platform.converter.MerchantCashPlaceConverter;
import cn.pluss.platform.deviceStock.DeviceStockService;
import cn.pluss.platform.entity.*;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.mapper.MerchantCashPayCodeMapper;
import cn.pluss.platform.mapper.MerchantCashPlaceMapper;
import cn.pluss.platform.mapper.MerchantCashPlaceStaffMapper;
import cn.pluss.platform.mapper.UserAppMapper;
import cn.pluss.platform.mapper.*;
import cn.pluss.platform.merchant.MerchantCashPayCodeService;
import cn.pluss.platform.merchant.MerchantCashPlaceService;
import cn.pluss.platform.merchant.MerchantCashPlaceStaffService;
@@ -30,10 +28,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import javax.annotation.Resource;
import java.util.*;
/**
* <p>
@@ -73,6 +69,14 @@ public class MerchantCashPlaceServiceImpl extends ServiceImpl<MerchantCashPlaceM
@Setter(onMethod_ = {@Autowired})
private UserAppMapper userAppMapper;
@Resource
private MerchantBaseInfoMapper merchantBaseInfoMapper;
@Resource
private MerchantChannelStatusService merchantChannelStatusService;
@Resource
private MerchantChannelStatusMapper channelStatusMapper;
@Override
public boolean saveOrUpdate(MerchantCashPlace entity) {
@@ -202,6 +206,19 @@ public class MerchantCashPlaceServiceImpl extends ServiceImpl<MerchantCashPlaceM
cashPayCodeService.save(cashPayCode);
}
@Override
public List<MerchantChannel> merchantChannel(String merchantCode,List<MerchantChannel> merchantChannels) {
List<Integer> channelByMerchantCode = channelStatusMapper.getChannelByMerchantCode(merchantCode);
for (MerchantChannel data : merchantChannels) {
for (Integer i :channelByMerchantCode) {
if (data.getId().equals(i)){
data.setStatus("1");
}
}
}
return merchantChannels;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delByCodeForApp(String code) {
@@ -235,6 +252,35 @@ public class MerchantCashPlaceServiceImpl extends ServiceImpl<MerchantCashPlaceM
}
}
/**
* (新)增加新的收银点
* @param merchantBaseInfo
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addCashPlace(MerchantBaseInfo merchantBaseInfo) {
//判断能不能新加收银点
MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(merchantBaseInfo.getMerchantCode());
if (merchantBaseInfoByMerchantCode == null){
throw new MsgException("不能添加收银点");
}
//增加基本子账号
String subMerchantCode = "M800" + DateUtil.format(new Date(), "yyyyMMdd") + StringUtil.random6V2();
merchantBaseInfo.setMasterMerchantCode(merchantBaseInfo.getMerchantCode());
merchantBaseInfo.setMerchantCode(subMerchantCode);
merchantBaseInfoMapper.saveMerchantBaseInfo(merchantBaseInfo);
//增加商户通道
MerchantChannelStatus merchantChannelStatus = new MerchantChannelStatus();
merchantChannelStatus.setMerchantCode(subMerchantCode);
merchantChannelStatus.setChannel(merchantBaseInfo.getChannel());
merchantChannelStatus.setStatus("0");
merchantChannelStatus.setThirdStatus("-100");
merchantChannelStatus.setCreateTime(new Date());
merchantChannelStatus.setUpdateTime(new Date());
boolean save = merchantChannelStatusService.save(merchantChannelStatus);
return save;
}
@Override
public List<MerchantCashPlaceVO> getListForApp(Page<MerchantCashPlace> page, MerchantCashPlace merchantCashPlace) {
UserApp userApp = userAppService.queryUserAppByToken();
@@ -313,6 +359,56 @@ public class MerchantCashPlaceServiceImpl extends ServiceImpl<MerchantCashPlaceM
return result;
}
@Override
public List<MerchantCashPlaceVO> getListForBase(Integer current, Integer size,String merchantCodes,String name) {
//分页
Page<MerchantBaseInfo> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
//查询
MerchantBaseInfo merchantBaseInfo = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(merchantCodes);
String merchantCode = merchantBaseInfo.getMerchantCode();
QueryWrapper<MerchantBaseInfo> qW = new QueryWrapper<>();
qW.eq("masterMerchantCode",merchantCode);
qW.like(StringUtils.isNotEmpty(name), "name", merchantBaseInfo.getAlias());
qW.orderByDesc("id");
Page<MerchantBaseInfo> merchantBaseInfoPage = merchantBaseInfoMapper.selectPage(page, qW);
//组装
List<MerchantCashPlaceVO> cashPlaceVOList = new ArrayList<>();
for (MerchantBaseInfo data :merchantBaseInfoPage.getRecords()) {
MerchantCashPlaceVO cashPlaceVO = new MerchantCashPlaceVO();
cashPlaceVO.setName(data.getAlias());
cashPlaceVO.setCode(data.getMerchantCode());
cashPlaceVO.setAddress(data.getAddress());
cashPlaceVO.setCreateTime(data.getCreateDt());
cashPlaceVO.setMerchantBaseInfo(data);
cashPlaceVO.setTab(data.getTab());
cashPlaceVOList.add(cashPlaceVO);
}
//放入自己
MerchantCashPlaceVO cashPlaceVOMy = new MerchantCashPlaceVO();
cashPlaceVOMy.setName(merchantBaseInfo.getAlias());
cashPlaceVOMy.setCode(merchantBaseInfo.getMerchantCode());
cashPlaceVOMy.setAddress(merchantBaseInfo.getAddress());
cashPlaceVOMy.setCreateTime(merchantBaseInfo.getCreateDt());
cashPlaceVOMy.setMerchantBaseInfo(merchantBaseInfo);
cashPlaceVOMy.setTab(merchantBaseInfo.getTab());
cashPlaceVOList.add(cashPlaceVOMy);
//如果全为0,默认是用户号
boolean allZero = true;
for (MerchantCashPlaceVO vo : cashPlaceVOList) {
if (vo.getTab() != 0) {
allZero = false;
break;
}
}
if (allZero && !cashPlaceVOList.isEmpty()) {
cashPlaceVOList.get(cashPlaceVOList.size() - 1).setTab(1);
}
return cashPlaceVOList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void bindPayCode(MerchantCashPayCode merchantCashPayCode) {

View File

@@ -1,10 +1,13 @@
package cn.pluss.platform.merchant.impl;
import cn.pluss.platform.entity.MerchantBaseInfo;
import cn.pluss.platform.entity.MerchantCashPlace;
import cn.pluss.platform.entity.MerchantCashPlaceStaff;
import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.mapper.MerchantBaseInfoMapper;
import cn.pluss.platform.mapper.MerchantCashPlaceStaffMapper;
import cn.pluss.platform.merchant.MerchantBaseInfoService;
import cn.pluss.platform.merchant.MerchantCashPlaceService;
import cn.pluss.platform.merchant.MerchantCashPlaceStaffService;
import cn.pluss.platform.userApp.UserAppService;
@@ -19,7 +22,9 @@ import lombok.val;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -40,6 +45,10 @@ public class MerchantCashPlaceStaffServiceImpl extends ServiceImpl<MerchantCashP
@Setter(onMethod_ = {@Autowired})
private MerchantCashPlaceService cashPlaceService;
@Resource
private MerchantBaseInfoMapper merchantBaseInfoMapper;
@Resource
private MerchantBaseInfoService merchantBaseInfoService;
@Override
public void bindCashPlace(Long userId, MerchantCashPlace cashPlace) {
@@ -141,6 +150,23 @@ public class MerchantCashPlaceStaffServiceImpl extends ServiceImpl<MerchantCashP
update(cashPlaceStaff, uW);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void cutChannel(String merchantCode,String code) {
MerchantBaseInfo baseInfo = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(code);
if (baseInfo == null){
throw new MsgException("不能切换到该通道");
}
//切换
UpdateWrapper<MerchantBaseInfo> updateWrapper1 = new UpdateWrapper<MerchantBaseInfo>()
.set("tab", 0).eq("masterMerchantCode", merchantCode).or().eq("merchantCode",merchantCode);
merchantBaseInfoService.update(updateWrapper1);
UpdateWrapper<MerchantBaseInfo> updateWrapper = new UpdateWrapper<MerchantBaseInfo>()
.set("tab", 1).eq("merchantCode", code);
merchantBaseInfoService.update(updateWrapper);
}
@Override
public void offLineCashPlace(String cashPlaceCode) {
MerchantCashPlace merchantCashPlace = new MerchantCashPlace().setCode(cashPlaceCode);