From 6ba6151af0f411568488c65099ebdb599a38413f Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Fri, 21 Jun 2024 13:13:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=8C=E6=88=90=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=B7=BB=E5=8A=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ArtificerController.java | 2 +- .../app/AppArtificerController.java | 17 +++- .../sqx/modules/artificer/dao/OrdersDao.java | 2 + .../sqx/modules/artificer/entity/Orders.java | 13 +++ .../artificer/service/OrdersService.java | 2 +- .../service/impl/OrdersServiceImpl.java | 5 +- .../task/service/impl/AllTaskServiceImpl.java | 82 +++++++++++++++---- .../mapper/artificer/ArtificerDao.xml | 1 + .../resources/mapper/artificer/OrdersDao.xml | 7 ++ 9 files changed, 108 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/sqx/modules/artificer/controller/ArtificerController.java b/src/main/java/com/sqx/modules/artificer/controller/ArtificerController.java index f579730..0bf9ea0 100644 --- a/src/main/java/com/sqx/modules/artificer/controller/ArtificerController.java +++ b/src/main/java/com/sqx/modules/artificer/controller/ArtificerController.java @@ -184,7 +184,7 @@ public class ArtificerController { @PostMapping("/accomplishOrders") @ApiOperation("完成订单") public Result accomplishOrders(Long ordersId){ - return ordersService.accomplishOrders(ordersId,1,null,null); + return ordersService.accomplishOrders(ordersId,1,null,null,null, null,null); } diff --git a/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java b/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java index dd74cdf..2d7e69f 100644 --- a/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java +++ b/src/main/java/com/sqx/modules/artificer/controller/app/AppArtificerController.java @@ -21,6 +21,8 @@ import com.sqx.modules.artificer.entity.*; import com.sqx.modules.artificer.service.*; import com.sqx.modules.bl.collect.entity.CollectMassage; import com.sqx.modules.bl.collect.service.CollectMassageService; +import com.sqx.modules.bl.pingjiaTag.entity.BlPingjiaTag; +import com.sqx.modules.bl.pingjiaTag.service.BlPingjiaTagService; import com.sqx.modules.common.dao.CommonInfoDao; import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.service.CommonInfoService; @@ -81,6 +83,9 @@ public class AppArtificerController { private CommonInfoDao commonInfoDao; @Autowired private ArtificerDao artificerDao; + + @Autowired + private BlPingjiaTagService blPingjiaTagService; @Autowired private UserRechargeDao userRechargeDao; @Autowired @@ -252,8 +257,8 @@ public class AppArtificerController { @PostMapping("/accomplishOrders") @ApiOperation("完成订单") - public Result accomplishOrders(Long ordersId,String accomplishLongitude,String accomplishLatitude){ - return ordersService.accomplishOrders(ordersId,2,accomplishLongitude,accomplishLatitude); + public Result accomplishOrders(Long ordersId,String accomplishLongitude,String accomplishLatitude,String jsFwcn,String jsPjtag,String jsTsbz){ + return ordersService.accomplishOrders(ordersId,2,accomplishLongitude,accomplishLatitude, jsFwcn, jsPjtag, jsTsbz); } @PostMapping("/startOrders") @@ -588,5 +593,13 @@ public class AppArtificerController { return Result.success("拒单申请已提交,请等待客户审核!"); } + @ApiOperation("技师获取评价标签") + @GetMapping("/getPingjiaTagList") + public Result getPingjiaTagList(){ + List list = blPingjiaTagService.list(); + Map map = new HashMap(); + map.put("data",list); + return Result.success(map); + } } diff --git a/src/main/java/com/sqx/modules/artificer/dao/OrdersDao.java b/src/main/java/com/sqx/modules/artificer/dao/OrdersDao.java index 749ba02..46b8bd9 100644 --- a/src/main/java/com/sqx/modules/artificer/dao/OrdersDao.java +++ b/src/main/java/com/sqx/modules/artificer/dao/OrdersDao.java @@ -122,4 +122,6 @@ public interface OrdersDao extends BaseMapper { IPage getJiazhongList(Page pages, Long userId, Integer isSfwc, String startTime, String endTime); IPage getChongzhiList(Page pages, Long userId, Integer isSfwc, String startTime, String endTime); + + String selectOrdersZxscNum(Long artificerId, String startTime, String endTime); } \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/artificer/entity/Orders.java b/src/main/java/com/sqx/modules/artificer/entity/Orders.java index 1732273..3764b62 100644 --- a/src/main/java/com/sqx/modules/artificer/entity/Orders.java +++ b/src/main/java/com/sqx/modules/artificer/entity/Orders.java @@ -310,6 +310,19 @@ public class Orders implements Serializable { */ private String refusalContent; + /** + * 技师完成服务承诺 多个按照逗号分割 + */ + private String jsFwcn; + /** + * 技师评价标签 多个按照逗号分割 + */ + private String jsPjtag; + /** + * 技师特殊备注 + */ + private String jsTsbz; + /** * 项目名称 */ diff --git a/src/main/java/com/sqx/modules/artificer/service/OrdersService.java b/src/main/java/com/sqx/modules/artificer/service/OrdersService.java index 6bb0662..39b5503 100644 --- a/src/main/java/com/sqx/modules/artificer/service/OrdersService.java +++ b/src/main/java/com/sqx/modules/artificer/service/OrdersService.java @@ -48,7 +48,7 @@ public interface OrdersService extends IService { Result payUserVip(Long userId,Long vipDetailsId); - Result accomplishOrders(Long ordersId,Integer type,String accomplishLongitude,String accomplishLatitude); + Result accomplishOrders(Long ordersId,Integer type,String accomplishLongitude,String accomplishLatitude,String jsFwcn,String jsPjtag,String jsTsbz); Result startOrders(Long ordersId,String startLongitude,String startLatitude,String startImg); diff --git a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java index f887d6b..2426434 100644 --- a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java @@ -2862,7 +2862,7 @@ public class OrdersServiceImpl extends ServiceImpl implements @Override - public Result accomplishOrders(Long ordersId, Integer type, String accomplishLongitude, String accomplishLatitude) { + public Result accomplishOrders(Long ordersId, Integer type, String accomplishLongitude, String accomplishLatitude,String jsFwcn,String jsPjtag,String jsTsbz) { reentrantReadWriteLock.writeLock().lock(); try { Orders orders = baseMapper.selectById(ordersId); @@ -3017,6 +3017,9 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetailsService.save(userMoneyDetails); } orders.setEndTimes(DateUtils.format(new Date())); + orders.setJsFwcn(jsFwcn); + orders.setJsPjtag(jsPjtag); + orders.setJsTsbz(jsTsbz); //修改订单表类型 baseMapper.updateById(orders); //修改订单下所有加钟的状态为待评价 diff --git a/src/main/java/com/sqx/modules/task/service/impl/AllTaskServiceImpl.java b/src/main/java/com/sqx/modules/task/service/impl/AllTaskServiceImpl.java index 7c6e516..000c6dd 100644 --- a/src/main/java/com/sqx/modules/task/service/impl/AllTaskServiceImpl.java +++ b/src/main/java/com/sqx/modules/task/service/impl/AllTaskServiceImpl.java @@ -55,9 +55,10 @@ public class AllTaskServiceImpl implements AllTaskSercice { * 计算技师升级规则 每天半夜1点执行,预留12点到01点之间的计算间隔,用于触发其他计算逻辑 * A0,A1,A2,A3,A4,A5等 */ - @Scheduled(cron = "0 0 1 * * ?") + @Scheduled(cron = "0 0 0 * * ?") public void upgradeJishi() { - //1.获取全部有效技师 + System.out.println("------------计算技师升级规则-----------"); + //1.获取全部参与积分规则的技师 List jslist = artificerDao.getYxjsList(); //2.获取计算周期,从几号到几号例如1号-10号为一个周期,11号到20号第二个周期,21号-月底是第三个周期 Calendar calendar = Calendar.getInstance(); @@ -103,28 +104,73 @@ public class AllTaskServiceImpl implements AllTaskSercice { //获取技师是否参与积分规则,如果参与积分规则则继续执行,否则不变分成比例 Integer ynJfgz = jsPar.getYnJfgz();//是否参与积分规则计算(0不参与 1参与) if(ynJfgz==1){ - Long classifyId = jsPar.getClassifyId(); + //4.1获取 技师销售金额(order表的 price) 只查询完成的单子 + int jsdqyj = ordersDao.selectOrdersArtificerIntegralEarnings(jsPar.getArtificerId(),endTime,startTime); + //4.2获取 技师加钟率(order表的parent_id为空则是正常订单,不为空则是加钟订单 用加钟订单/正常订单为加钟率) + String jsjzl = ordersDao.selectOrdersArtificerIntegraladdNum(jsPar.getArtificerId(),endTime,startTime); + //4.3获取 在线时长(通过积分表和兑换比例反推在线时长 user_rechange的type=1) + String jszxsc = ordersDao.selectOrdersZxscNum(jsPar.getArtificerId(),startTime,endTime); + CommonInfo commonInfo = commonInfoDao.findOne(100000); + String minute = commonInfo.getValue();//多少分钟等于1积分 + Double zxscHour = Double.parseDouble(jszxsc)*Double.parseDouble(minute)/60; + //4.4获取 积分(充值积分 user_rechange的type=2) + String jsjfStr = ordersDao.selectOrdersStoredValueIntegral(jsPar.getArtificerId(),endTime,startTime); + //4.5根据对应的收益,判断属于哪个等级,并修改artificer的yn_jfgz(等级标识)及rate(百分比) //组装对应的升级规则集合 - List sjgzList = new ArrayList<>(); + Long classifyId = jsPar.getClassifyId(); +// List sjgzList = new ArrayList<>(); + Double zddj = Double.parseDouble(jsdqyj+""); + Double jzl = Double.parseDouble(jsjzl); + Double zxsc = zxscHour; + Double jsjf = Double.parseDouble(jsjfStr); + String jsdj = "";// + BigDecimal rate = BigDecimal.valueOf(0.6); for (ArtificerPartitioningDetails sjgzPar : sjgzAllList){ //当技师的服务类型=升级规则的服务类型,才可以添加到升级规则里去 if(StringUtils.equals(sjgzPar.getClassifyId(),String.valueOf(classifyId))){ - sjgzList.add(sjgzPar); +// sjgzList.add(sjgzPar); + //最低业绩 + Double zddjPar = Double.parseDouble(sjgzPar.getOutstandingAchievement()+""); + //加钟率 + Double jzlPar = Double.parseDouble(sjgzPar.getClockRate()+""); + //在线时长 + Double zxscPar = Double.parseDouble(sjgzPar.getDurationOnline()+""); + //充值积分 + Double czjfPar = Double.parseDouble(sjgzPar.getIntegral()+""); + System.out.println("============================"+sjgzPar.getGrade()+"================================"); + System.out.println("最低业绩:"+zddj+">"+zddjPar); + System.out.println("加钟率A:"+jzl+">"+jzlPar); + System.out.println("在线时长:"+zxsc+">"+zxscPar); + System.out.println("充值积分:"+jsjf+">"+czjfPar); + System.out.println("============================================================"); + if(zddj>zddjPar && jzl >jzlPar && zxsc > zxscPar && jsjf > czjfPar){ + jsdj = sjgzPar.getGrade(); + rate = BigDecimal.valueOf(Double.parseDouble(sjgzPar.getProportionalSharing())); + break; + } } } - //4.1获取 技师销售金额(order表的 price) 只查询完成的单子 - Orders ordersQueryWrapper = new Orders(); - ordersQueryWrapper.setStartTime(startTime); - ordersQueryWrapper.setEndTime(endTime); - ordersQueryWrapper.setArtificerId(jsPar.getArtificerId()); - String tjxsje = ordersDao.selectTjpriceList(ordersQueryWrapper); - //4.2获取 技师加钟率(order表的parent_id为空则是正常订单,不为空则是加钟订单 用加钟订单/正常订单为加钟率) - - //4.3获取 在线时长(通过积分表和兑换比例反推在线时长 user_rechange的type=1) - - //4.4获取 积分(充值积分 user_rechange的type=2) - - //4.5根据对应的收益,判断属于哪个等级,并修改artificer的yn_jfgz(等级标识)及rate(百分比) + //如果都不符合,则给最低等级(保底) + if(StringUtils.isEmpty(jsdj)){ + QueryWrapper sjgzQuery1 = new QueryWrapper(); + sjgzQuery1.eq("outstanding_achievement",0); + sjgzQuery1.eq("clock_rate",0); + sjgzQuery1.eq("duration_online",0); + sjgzQuery1.eq("integral",0); + sjgzQuery1.eq("classify_id",classifyId); + sjgzQuery1.last("limit 1"); + ArtificerPartitioningDetails zddjgz = artificerPartitioningDetailsMapper.selectOne(sjgzQuery1); + jsdj = zddjgz.getGrade(); + rate = BigDecimal.valueOf(Double.parseDouble(zddjgz.getProportionalSharing())); + } + //如果还查不出来,则保持原样,一点办法都没有了 + if(StringUtils.isNotEmpty(jsdj)){ + Artificer jsUp = new Artificer(); + jsUp.setRate(rate); + jsUp.setGrade(jsdj); + jsUp.setArtificerId(jsPar.getArtificerId()); + artificerDao.updateById(jsUp); + } } } diff --git a/src/main/resources/mapper/artificer/ArtificerDao.xml b/src/main/resources/mapper/artificer/ArtificerDao.xml index d1e3c98..ddb91a1 100644 --- a/src/main/resources/mapper/artificer/ArtificerDao.xml +++ b/src/main/resources/mapper/artificer/ArtificerDao.xml @@ -204,6 +204,7 @@ select a.* from artificer a inner join tb_user u on a.user_id=u.user_id where u.status = 1 + and yn_jfgz = 1 diff --git a/src/main/resources/mapper/artificer/OrdersDao.xml b/src/main/resources/mapper/artificer/OrdersDao.xml index 2c815e9..fd21849 100644 --- a/src/main/resources/mapper/artificer/OrdersDao.xml +++ b/src/main/resources/mapper/artificer/OrdersDao.xml @@ -991,6 +991,13 @@ and o.end_times BETWEEN #{startDate} and #{endDate} and o.status in (3,5) + +