package com.matrix; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.exception.GlobleException; import com.matrix.core.tools.DateUtil; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.dao.SysUsersDao; import com.matrix.system.common.dao.UtilDao; import com.matrix.system.common.service.BusParameterSettingService; import com.matrix.system.common.service.OperationLogService; import com.matrix.system.common.tools.ServiceUtil; import com.matrix.system.constance.Dictionary; import com.matrix.system.constance.TableMapping; import com.matrix.system.enums.BooleanEnum; import com.matrix.system.enums.OperationButtonEnum; import com.matrix.system.enums.OperationFunctionEnum; import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant; import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; import com.matrix.system.hive.bean.SysBeauticianState; import com.matrix.system.hive.bean.SysBedState; import com.matrix.system.hive.bean.SysProjServices; import com.matrix.system.hive.bean.SysVipInfo; import com.matrix.system.hive.dao.*; import com.matrix.system.hive.service.*; import com.matrix.system.score.service.ScoreVipDetailService; import com.matrix.system.shopXcx.bean.ShopOrder; import com.matrix.system.shopXcx.bean.ShopOrderDetails; import com.matrix.system.shopXcx.bean.ShopProduct; import com.matrix.system.shopXcx.dao.ShopOrderDao; import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; import com.matrix.system.shopXcx.dao.ShopSkuDao; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Objects; /** * 测试类示例 * * @author jiangyouyao * @email 512061637@qq.com * @date 2019年2月25日 */ @RunWith(SpringRunner.class) @SpringBootTest(classes = {ZqErpApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class JyyTests2 { @Autowired ShopOrderDao shopOrderDao; @Autowired ShopOrderDetailsDao shopOrderDetailsDao; @Autowired SysVipInfoService sysVipInfoService; @Autowired SysVipInfoDao vipDao; @Autowired CodeService codeService; @Autowired SysOrderDao sysOrderDao; @Autowired ShoppingGoodsService shoppingGoodsService; @Autowired SysOrderItemDao orderItemDao; @Autowired SysOrderService orderService; @Autowired ShopSkuDao shopSkuDao; @Autowired BusParameterSettingsDao parameterSettingsDao; @Autowired private ShopSalesmanOrderDao shopSalesmanOrderDao; @Autowired private ShopSalesmanGradeDao shopSalesmanGradeDao; @Autowired private BusParameterSettingsDao busParameterSettingsDao; @Autowired SysBedStateDao sysBedStateDao; @Autowired private SysProjServicesDao sysProjServicesDao; @Autowired private SysBedStateDao bedStateDao; @Autowired private SysBeauticianStateDao beauticianStateDao; @Autowired TaiYanAliyunSmsService taiYanAliyunSmsService; @Autowired ServicesFlowDao servicesFlowDao; @Autowired SysUsersDao userDao; @Autowired ShoppingGoodsAssembleDao shoppingGoodsAssembleDao; @Autowired BusParameterSettingService busParameterSettingService; @Autowired ScoreVipDetailService scoreVipDetailService; @Autowired SysVipInfoDao sysVipInfoDao; @Autowired ShoppingGoodsAssembleDao goodsAssembleDao; @Autowired private OperationLogService operationLogService; @Autowired private UtilDao utilDao; @Autowired private ServiceUtil serviceUtil; @Test public void testQuChong(){ boolean b = serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "PHONE", "18229856946", "company_id", 17); System.out.println("___________" + b); } private HashMap excuteTow(String tableName, String column1, Object value1, String column2, Object value2) { HashMap query = new HashMap<>(MatrixConstance.COLLECTION_SIZE); query.put("tableName", tableName); query.put("column1", column1); query.put("value1", value1); query.put("column2", column2); query.put("value2", value2); query = (HashMap) utilDao.selectRepeatTowColumn(query); return query; } @Test public void testServiceError(){ SysProjServices projServices = new SysProjServices(); projServices.setId(12948L); SysProjServices checkprojServices = sysProjServicesDao.selectById(projServices.getId()); if (!checkprojServices.getState().equals(Dictionary.SERVICE_STATU_FWZ)) { throw new GlobleException("该服务单状态为" + checkprojServices.getState() + ",不可以进行当前操作!"); } SysBeauticianState checkBeauticianState = new SysBeauticianState(); checkBeauticianState.setServicesId(projServices.getId()); checkBeauticianState.setState(Dictionary.BEATUI_STATE_FWJS); int rerunlt = beauticianStateDao.chengItemState(checkBeauticianState); // 验证是否是最后一个美疗师结束服务 boolean isOver = true; List beauticianStateList = beauticianStateDao.selectBySerIds(checkprojServices.getId()); for (SysBeauticianState beauticianState : beauticianStateList) { if (!beauticianState.getState().equals(Dictionary.BEATUI_STATE_FWJS)) { isOver = false; break; } } if (isOver) { // 释放床位资源 SysBedState checkBedState = sysBedStateDao.selectBySerIdAndBedId(checkprojServices.getBedId(), checkprojServices.getId()); if (checkBedState != null) { checkBedState.setBedState(Dictionary.BED_STATE_SYJS); bedStateDao.update(checkBedState); } checkprojServices.setEndTime(new Date()); // 计算时差 long minspace = DateUtil.getDifTimeMin(checkprojServices.getStartTime(), checkprojServices.getEndTime()) - checkprojServices.getTotalTime(); // 判断是服务超时还是服务提前结束,如果minspace大于0则是超时服务,小于0则是提前结束服务 checkprojServices.setIsOverTime(minspace + ""); checkprojServices.setState(Dictionary.SERVICE_STATU_FWWC); sysProjServicesDao.update(checkprojServices); } //保存单据日志 operationLogService.saveOperation(checkprojServices.getCompanyId(), checkprojServices.getShopId(),1028L, OperationFunctionEnum.SERVICE_ORDER, OperationButtonEnum.SERVICE_ORDER_END, checkprojServices.getId(), checkprojServices.getServiceNo(), checkprojServices.getVipId()); } public boolean isSettingOpen(String settingKey,Long companyId) { BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(settingKey, companyId); return ( Objects.nonNull(busParameterSettings) && StringUtils.isNotBlank(busParameterSettings.getParamValue()) // && AppConstance.IS_Y.equals(busParameterSettings.getParamValue()) && BooleanEnum.TRUE.getValue() == busParameterSettings.getIntParamValue() ); } @Test public void testBoolean(){ boolean settingOpen = isSettingOpen(AppConstance.OPEN_SERVICE_ORDER_AUTO_BATCHING, 17L); System.out.println("----------------------------"+settingOpen); } @Test @Rollback public void testNoticeTask() throws IOException { // orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes())); ShopOrder order=shopOrderDao.selectById(1353); //判读客户是否存在上级,存在则产生上级的收益 SysVipInfo sysVipInfo = sysVipInfoService.findById(order.getUserId()); LogUtil.debug("处理分销订单userOpid={}",sysVipInfo.getOpenId()); //判断是否重复生成 QueryWrapper queryWrapper=new QueryWrapper(); queryWrapper.eq("order_id",order.getId()); Integer orderCount = shopSalesmanOrderDao.selectCount(queryWrapper); ShopSalesmanOrder salesmanOrder=new ShopSalesmanOrder(); salesmanOrder.setCompanyId(order.getCompanyId()); salesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER); salesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER); salesmanOrder.setCreateTime(new Date()); salesmanOrder.setUpdateTime(new Date()); salesmanOrder.setOrderId(Long.parseLong(order.getId()+"")); salesmanOrder.setUserId(order.getUserId()); salesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES); salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS); Double selfAmount=0D; Double zk=1D; //分销订单总额 Double orderTotal=0D; for (ShopOrderDetails item:order.getDetails() ){ if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ orderTotal+=item.getTotalPrice().doubleValue(); } } //自购返佣 Integer isSales = sysVipInfo.getIsSales(); if(SysVipInfo.IS_SALES == isSales){ for (ShopOrderDetails item:order.getDetails() ){ if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ //分销规则是否开启自购返佣 BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, sysVipInfo.getCompanyId()); //按分销等级计算 ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade()); if(ObjectUtil.isNotEmpty(zgfy)) { //获取商品的自购返佣价格,如果没有设置,在去获取当前推广人的等级的自购返佣比例 if(StrUtil.isNotEmpty(zgfy.getParamValue()) && FenxiaoSettingConstant.FX_ZGFY_YES.equals(zgfy.getParamValue())) { if(item.getShopSku().getSelfPrice() == null ||item.getShopSku().getSealesPrice().doubleValue() == 0){ selfAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSelfCommission()/100); }else { //按产品设置的自购返佣金额计算 selfAmount+=item.getShopSku().getSelfPrice().doubleValue()*item.getCount(); } } } } } //自购返佣记录 if(selfAmount > 0) { //整体的优惠金额折算成折扣,* 佣金 zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal; selfAmount=selfAmount*zk; salesmanOrder.setAmount(selfAmount); salesmanOrder.setSalesUserId(order.getUserId()); shopSalesmanOrderDao.insert(salesmanOrder); } } //存在上级 if(sysVipInfo.getRecommendId()!=null) { SysVipInfo salesMan=sysVipInfoService.findById(sysVipInfo.getRecommendId()); Double salesAmount=0D; Double invitationAmount=0D; SysVipInfo invitationMan=null; ShopSalesmanOrder invitationOrder=null; boolean hasInvitationMan=salesMan.getRecommendId()!=null; //判断推广员是否还存在上级,存在则计算邀请收益 if(hasInvitationMan){ invitationMan=sysVipInfoService.findById(salesMan.getRecommendId()); invitationOrder=new ShopSalesmanOrder(); BeanUtils.copyProperties(salesmanOrder,invitationOrder); invitationOrder.setSalesUserId(invitationMan.getId()); invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION); } //收益计算 for (ShopOrderDetails item:order.getDetails() ){ if(item.getShopProduct().getAbleSales()== ShopProduct.ABLE_SALES){ //按分销等级计算 ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade()); //推广提成,按分销等级计算或者按产品设置的推广金额计算 if(item.getShopSku().getSealesPrice()==null ||item.getShopSku().getSealesPrice().doubleValue()==0){ salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100); }else{ salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount(); } //邀请提成,获取商品的邀请提成价格和是否有上级推广人,如果没有设置,在去获取当前推广人的等级的自购返佣比例 if(hasInvitationMan) { if(item.getShopSku().getInvitationPrice() == null ||item.getShopSku().getInvitationPrice().doubleValue() == 0){ //获取上级的推广等级设置 ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade()); invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getInvitationCommission()/100); }else { //按产品设置的邀请提成价格计算 invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount(); } } } } //推广提成记录 if(salesAmount>0){ //整体的优惠金额折算成折扣,* 佣金 zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal; salesAmount=salesAmount*zk; salesmanOrder.setAmount(salesAmount); salesmanOrder.setSalesUserId(sysVipInfo.getRecommendId()); shopSalesmanOrderDao.insert(salesmanOrder); } //邀请提成记录 if(invitationAmount > 0) { //整体的优惠金额折算成折扣,* 佣金 invitationAmount=invitationAmount*zk; invitationOrder.setAmount(invitationAmount); shopSalesmanOrderDao.insert(invitationOrder); } }else{ LogUtil.debug("不存在父级userOpid={}",sysVipInfo.getOpenId()); } } }