| @@ -51,14 +51,14 @@ public class WxRentContractController extends BaseController { | |||||
| public ResultData update(@RequestBody WxRentContract wxRentContract) { | public ResultData update(@RequestBody WxRentContract wxRentContract) { | ||||
| logger.debug("[" + getIpAddr() + "] WxRentContractController::update"); | logger.debug("[" + getIpAddr() + "] WxRentContractController::update"); | ||||
| wxRentContract.setTenantId(getTenantId()); | wxRentContract.setTenantId(getTenantId()); | ||||
| return wxRentContractService.update(wxRentContract, getUser().getId()); | |||||
| return wxRentContractService.update(wxRentContract, getUser().getId(),getUser().getName()); | |||||
| } | } | ||||
| @PostMapping("updateMoney") | @PostMapping("updateMoney") | ||||
| public ResultData updateMoney(@RequestBody WxRentContract wxRentContract) { | public ResultData updateMoney(@RequestBody WxRentContract wxRentContract) { | ||||
| logger.debug("[" + getIpAddr() + "] WxRentContractController::updateMoney"); | logger.debug("[" + getIpAddr() + "] WxRentContractController::updateMoney"); | ||||
| wxRentContract.setTenantId(getTenantId()); | wxRentContract.setTenantId(getTenantId()); | ||||
| return wxRentContractService.update(wxRentContract, getUser().getId()); | |||||
| return wxRentContractService.update(wxRentContract, getUser().getId(),getUser().getName()); | |||||
| } | } | ||||
| @PostMapping("updateFile") | @PostMapping("updateFile") | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -11,8 +11,8 @@ spring: | |||||
| initialSize: 1 | initialSize: 1 | ||||
| maxWait: 60000 | maxWait: 60000 | ||||
| minIdle: 1 | minIdle: 1 | ||||
| timeBetweenEvictionRunsMillis: 60000 | |||||
| minEvictableIdleTimeMillis: 300000 | |||||
| timeBetweenEvictionRunsMillis: 28000 | |||||
| minEvictableIdleTimeMillis: 28000 | |||||
| validationQuery: select 'x' | validationQuery: select 'x' | ||||
| testWhileIdle: true | testWhileIdle: true | ||||
| testOnBorrow: false | testOnBorrow: false | ||||
| @@ -28,11 +28,16 @@ public enum ErrorCode{ | |||||
| SYS_REPEAT_SUBMIT_EXCEPTION(1013, "请勿重复操作"), | SYS_REPEAT_SUBMIT_EXCEPTION(1013, "请勿重复操作"), | ||||
| /** | /** | ||||
| * 数据库 | |||||
| * 审批流 | |||||
| */ | */ | ||||
| FLOW_FAIL(24000, "审批流操作出错"), | FLOW_FAIL(24000, "审批流操作出错"), | ||||
| /** | |||||
| * 审批流不存在 | |||||
| */ | |||||
| FLOW_INST_NOT_EXIST(24001, "任务不存在"), | |||||
| /** | /** | ||||
| * 数据库 | * 数据库 | ||||
| */ | */ | ||||
| @@ -40,7 +40,7 @@ public interface WxRentContractService { | |||||
| */ | */ | ||||
| ResultData save(WxRentContract record,Long userId,String userName); | ResultData save(WxRentContract record,Long userId,String userName); | ||||
| ResultData update(WxRentContract record, Long userId); | |||||
| ResultData update(WxRentContract record, Long userId,String userName); | |||||
| /** | /** | ||||
| * 根据Id删除实体 | * 根据Id删除实体 | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import java.util.*; | import java.util.*; | ||||
| import java.util.stream.Collectors; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| @@ -10,6 +11,7 @@ import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxCoupon; | import com.iformall.domain.po.WxCoupon; | ||||
| import com.iformall.domain.po.WxCouponMerchant; | import com.iformall.domain.po.WxCouponMerchant; | ||||
| import com.iformall.domain.vo.WxCouponCVo; | import com.iformall.domain.vo.WxCouponCVo; | ||||
| import com.iformall.domain.vo.WxMerchantVo; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.WxCouponMapper; | import com.iformall.mapper.WxCouponMapper; | ||||
| import com.iformall.mapper.WxCouponMerchantMapper; | import com.iformall.mapper.WxCouponMerchantMapper; | ||||
| @@ -71,7 +73,15 @@ public class WxCouponServiceImpl implements WxCouponService { | |||||
| @Override | @Override | ||||
| public WxCouponCVo getVoById(Long id) { | public WxCouponCVo getVoById(Long id) { | ||||
| return wxCouponMapper.findVoDetail(id); | |||||
| WxCouponCVo wxCouponCVo = wxCouponMapper.findVoDetail(id); | |||||
| List<WxMerchantVo> merchantList = wxCouponCVo.getMerchantVoList(); | |||||
| if (merchantList != null) { | |||||
| merchantList = merchantList.stream().filter( | |||||
| m->m.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())) | |||||
| .collect(Collectors.toList()); | |||||
| } | |||||
| wxCouponCVo.setMerchantVoList(merchantList); | |||||
| return wxCouponCVo; | |||||
| } | } | ||||
| @@ -2,6 +2,7 @@ package com.iformall.service.impl; | |||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| @@ -92,7 +93,7 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| rent.setApplyStatus(applyStatus); | rent.setApplyStatus(applyStatus); | ||||
| wxRentContractService.updateApplyStatus(rent); | wxRentContractService.updateApplyStatus(rent); | ||||
| // 如果审批完成,而且是补录,修改状态 | |||||
| // 如果审批完成,而且是补录直接改为已签约状态(普通需要绑定商户才是已签约) | |||||
| if(supplement!=null && supplement && EnumRentContractAppStatus.FINISH.getCode().intValue() == applyStatus.intValue()) { | if(supplement!=null && supplement && EnumRentContractAppStatus.FINISH.getCode().intValue() == applyStatus.intValue()) { | ||||
| wxRentContractService.updateRentContractStatus(businessId); | wxRentContractService.updateRentContractStatus(businessId); | ||||
| } | } | ||||
| @@ -252,6 +253,9 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| } | } | ||||
| String processInstanceId = resultList.get(0).getProcessInstanceId(); | String processInstanceId = resultList.get(0).getProcessInstanceId(); | ||||
| ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); | ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); | ||||
| if(pi == null){ | |||||
| return new ResultData(ErrorCode.FLOW_INST_NOT_EXIST.getCode(), "任务不存在"); | |||||
| } | |||||
| Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult(); | Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult(); | ||||
| Map<String,Object> mapInfo = taskService.getVariables(task.getId()); | Map<String,Object> mapInfo = taskService.getVariables(task.getId()); | ||||
| List<Map<String,String>> taskAssigneeList = (List)mapInfo.get("taskAssignee"); | List<Map<String,String>> taskAssigneeList = (List)mapInfo.get("taskAssignee"); | ||||
| @@ -318,7 +322,7 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); | Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); | ||||
| if (task == null) { | if (task == null) { | ||||
| throw new MallinkException(Result.ERROR, "流程不存在"); | |||||
| return new ResultData(ErrorCode.FLOW_INST_NOT_EXIST.getCode(), "任务不存在"); | |||||
| } | } | ||||
| taskName = task.getName(); | taskName = task.getName(); | ||||
| taskKey = task.getTaskDefinitionKey(); | taskKey = task.getTaskDefinitionKey(); | ||||
| @@ -464,7 +468,7 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| String taskKey; | String taskKey; | ||||
| Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); | Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); | ||||
| if (task == null) { | if (task == null) { | ||||
| throw new MallinkException(Result.ERROR, "流程不存在"); | |||||
| return new ResultData(ErrorCode.FLOW_INST_NOT_EXIST.getCode(), "任务不存在"); | |||||
| } | } | ||||
| taskName = task.getName(); | taskName = task.getName(); | ||||
| taskKey = task.getTaskDefinitionKey(); | taskKey = task.getTaskDefinitionKey(); | ||||
| @@ -247,6 +247,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { | |||||
| couponIds.stream().filter(cid->!isCouponMerchantValid(cid)).forEach(cid->{ | couponIds.stream().filter(cid->!isCouponMerchantValid(cid)).forEach(cid->{ | ||||
| WxCoupon wxCoupon = new WxCoupon(); | WxCoupon wxCoupon = new WxCoupon(); | ||||
| wxCoupon.setId(cid); | wxCoupon.setId(cid); | ||||
| wxCoupon.setTenantId(wxMerchant.getTenantId()); | |||||
| wxCoupon.setStatus(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()); | wxCoupon.setStatus(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()); | ||||
| wxCouponService.saveOrUpdate(wxCoupon); | wxCouponService.saveOrUpdate(wxCoupon); | ||||
| }); | }); | ||||
| @@ -215,11 +215,31 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", record); | return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", record); | ||||
| } | } | ||||
| @Transactional(rollbackFor = {Exception.class}) | @Transactional(rollbackFor = {Exception.class}) | ||||
| @Override | @Override | ||||
| public ResultData update(WxRentContract record, Long userId) { | |||||
| return getResultDataForUpdate(record, userId); | |||||
| public ResultData update(WxRentContract record, Long userId,String userName) { | |||||
| ResultData resultData = getResultDataForUpdate(record, userId); | |||||
| try { | |||||
| // 启动审批流 | |||||
| if(record.getFlowParams() != null){ | |||||
| record.getFlowParams().put("businessId",record.getId().toString()); | |||||
| if(record.getMerchantId() != null) { | |||||
| record.getFlowParams().put("supplement", true); //设置补录 | |||||
| } | |||||
| wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); | |||||
| // 合同状态改成待签约 | |||||
| WxRentContract updateRentContract = new WxRentContract(); | |||||
| updateRentContract.setId(record.getId()); | |||||
| updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); | |||||
| wxRentContractMapper.updateStatus(updateRentContract); | |||||
| logger.info("id:{},启动审批流成功 ,是否补录:{}",record.getId().toString(),record.getMerchantId() != null); | |||||
| } | |||||
| } catch (Exception e) { | |||||
| logger.error("启动审批流失败,e:" + e.getMessage()); | |||||
| throw new MallinkException(ErrorCode.FLOW_FAIL.getCode(), "FLOW FAILD " + e.getMessage()); | |||||
| } | |||||
| return resultData; | |||||
| } | } | ||||
| public ResultData getResultDataForUpdate(WxRentContract record, Long userId) { | public ResultData getResultDataForUpdate(WxRentContract record, Long userId) { | ||||
| @@ -97,7 +97,11 @@ | |||||
| </select> | </select> | ||||
| <update id="updateStatusByCouponId" parameterType="com.iformall.domain.po.WxCouponChannel"> | <update id="updateStatusByCouponId" parameterType="com.iformall.domain.po.WxCouponChannel"> | ||||
| update wx_coupon_channel set status=#{status} where tenant_id=#{tenantId} and coupon_id=#{couponId} | |||||
| update wx_coupon_channel set status=#{status} | |||||
| where coupon_id=#{couponId} | |||||
| <if test=" null != tenantId "> | |||||
| and tenant_id = #{tenantId} | |||||
| </if> | |||||
| </update> | </update> | ||||
| <sql id="CouponChannelVoColumns"> | <sql id="CouponChannelVoColumns"> | ||||
| @@ -89,7 +89,11 @@ | |||||
| </select> | </select> | ||||
| <update id="updateStatusByCouponId" parameterType="com.iformall.domain.po.WxCouponChannel"> | <update id="updateStatusByCouponId" parameterType="com.iformall.domain.po.WxCouponChannel"> | ||||
| update wx_coupon_send set status=#{status} where tenant_id=#{tenantId} and coupon_id=#{couponId} | |||||
| update wx_coupon_send set status=#{status} | |||||
| where coupon_id=#{couponId} | |||||
| <if test=" null != tenantId "> | |||||
| and tenant_id = #{tenantId} | |||||
| </if> | |||||
| </update> | </update> | ||||
| <update id="offExpiriedCouponSendByCouponStatus"> | <update id="offExpiriedCouponSendByCouponStatus"> | ||||
| @@ -173,8 +173,13 @@ | |||||
| </sql> | </sql> | ||||
| <update id="updateStatusByPressCouponId" parameterType="com.iformall.domain.po.WxOrder"> | <update id="updateStatusByPressCouponId" parameterType="com.iformall.domain.po.WxOrder"> | ||||
| update wx_order set order_status=#{orderStatus} where tenant_id=#{tenantId} and product_id=#{productId} and press_end_date is not null | |||||
| </update> | |||||
| update wx_order set order_status=#{orderStatus} | |||||
| where product_id=#{productId} | |||||
| and press_end_date is not null | |||||
| <if test=" null != tenantId "> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| </update> | |||||
| <resultMap id="CVoResultMap" type="com.iformall.domain.vo.WxOrderCouponVo"> | <resultMap id="CVoResultMap" type="com.iformall.domain.vo.WxOrderCouponVo"> | ||||
| @@ -104,8 +104,7 @@ | |||||
| rc.price,rc.contract_number contractNumber,s.shop_number shopNumber,f.floor_name floorName,b.building_name buildingName, | rc.price,rc.contract_number contractNumber,s.shop_number shopNumber,f.floor_name floorName,b.building_name buildingName, | ||||
| rc.lease,rc.filepath,rc.filename,rc.pay_account payAccount,rc.sign_date signDate,rc.merchant_id merchantId,rc.type, | rc.lease,rc.filepath,rc.filename,rc.pay_account payAccount,rc.sign_date signDate,rc.merchant_id merchantId,rc.type, | ||||
| rc.start_date startDate,rc.end_date endDate,br.`name` brandName,rc.apply_status applyStatus,rc.bank_name | rc.start_date startDate,rc.end_date endDate,br.`name` brandName,rc.apply_status applyStatus,rc.bank_name | ||||
| bankName, | |||||
| rc.rent_shop_type rentShopType | |||||
| bankName,rc.merchant_id merchantId,rc.rent_shop_type rentShopType | |||||
| from wx_rent_contract rc | from wx_rent_contract rc | ||||
| left join wx_shop s on rc.shop_id=s.id | left join wx_shop s on rc.shop_id=s.id | ||||
| left join wx_mall_floor f on s.floor=f.id | left join wx_mall_floor f on s.floor=f.id | ||||
| @@ -186,7 +185,7 @@ | |||||
| left join wx_shop s on rc.shop_id=s.id | left join wx_shop s on rc.shop_id=s.id | ||||
| left join wx_mall_building b on s.building=b.id | left join wx_mall_building b on s.building=b.id | ||||
| left join wx_mall_floor f on s.floor=f.id | left join wx_mall_floor f on s.floor=f.id | ||||
| where rc.status not in(1,5,6,7) and rc.tenant_id=#{tenantId} | |||||
| where rc.status not in(0,1,5,6,7) and rc.tenant_id=#{tenantId} | |||||
| <if test=" null != rentShopType ">and rc.rent_shop_type = #{rentShopType}</if> | <if test=" null != rentShopType ">and rc.rent_shop_type = #{rentShopType}</if> | ||||
| order by id desc | order by id desc | ||||
| </select> | </select> | ||||