| @@ -2,6 +2,7 @@ package com.iformall.controller.market; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.annotation.ApiVersion; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.constant.SwaggerConstant; | |||
| @@ -93,6 +94,27 @@ public class WxLegionActivityOrderController extends BaseController { | |||
| return new ResultData(); | |||
| } | |||
| @ApiVersion(group = SwaggerConstant.V_2_0_0) | |||
| @ApiOperation("批量审核通过") | |||
| @PostMapping("batchAudiPass") | |||
| public ResultData batchAudiPass(@RequestBody List<Long> ids) { | |||
| if(ids == null || ids.isEmpty()){ | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
| } | |||
| try{ | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| wxLegionActivityOrderService.batchAudiPass(tenantEntity,ids,getUserId()); | |||
| return new ResultData(); | |||
| }catch(MallinkException e){ | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||
| }catch(Exception e){ | |||
| logger.error("异常:" + e); | |||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR); | |||
| } | |||
| } | |||
| @ApiVersion(group = SwaggerConstant.V_2_0_0) | |||
| @ApiOperation("审核驳回") | |||
| @PostMapping("audtFail") | |||
| @@ -24,7 +24,7 @@ public interface WxLegionActivityOrderMapper extends CommonMapper<WxLegionActivi | |||
| List<LegionActivityOrderStatistics> auditStatusStatistics(WxLegionActivityOrder wxLegionActivityOrder); | |||
| void updateAuditStatus(WxLegionActivityOrder wxLegionActivityOrder); | |||
| Integer updateAuditStatus(WxLegionActivityOrder wxLegionActivityOrder); | |||
| List<LegionActivityOrderTypeStatistics> orderTypeStatistics(WxLegionActivityOrder wxLegionActivityOrder); | |||
| @@ -31,6 +31,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper<WxOfflineAct | |||
| Integer getMerchantCount(WxOfflineActivityRecord recordQ); | |||
| List<WxOfflineActivityRecord> findGrantList(@Param("grantId")Long grantId, @Param("tenantId")String tenantId); | |||
| void insertList(@Param("recordList")List<WxOfflineActivityRecord> activityRecordList); | |||
| } | |||
| @@ -20,4 +20,6 @@ public interface WxLegionActivityOfflineConfigService { | |||
| List<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity); | |||
| void syncOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder); | |||
| void syncOfflineActivityRecord(List<WxLegionActivityOrder> wxLegionActivityOrders); | |||
| } | |||
| @@ -5,6 +5,7 @@ import com.iformall.domain.po.WxLegionActivity; | |||
| import com.iformall.domain.po.WxLegionActivityOrder; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.LegionActivityMerchantStatistics; | |||
| import com.iformall.domain.vo.LegionActivitySellOrder; | |||
| @@ -43,4 +44,6 @@ public interface WxLegionActivityOrderService { | |||
| List<LegionActivitySellOrder> getActivitySellOrder(WxLegionActivityOrder wxLegionActivityOrder); | |||
| void exportActivitySellOrder(HttpServletRequest request, HttpServletResponse response, WxLegionActivityOrder wxLegionActivityOrder); | |||
| void batchAudiPass(TenantEntity tenantEntity, List<Long> ids, Long userId); | |||
| } | |||
| @@ -15,9 +15,8 @@ import com.iformall.service.WxOfflineActivityService; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.ArrayList; | |||
| import java.util.Collections; | |||
| import java.util.List; | |||
| import java.util.*; | |||
| import java.util.stream.Collectors; | |||
| /** | |||
| * @author xiaohu | |||
| @@ -75,12 +74,48 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit | |||
| @Override | |||
| public void syncOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder) { | |||
| IdWorker idWorker = IdWorker.get(); | |||
| //所有都同步(绑定线下活动意义不大) | |||
| WxOfflineActivityRecord activityRecord = createOfflineActivityRecord(legionActivityOrder); | |||
| activityRecord.setId(idWorker.nextId()); | |||
| if(activityRecord.getMerchantId() != null){ | |||
| WxMerchant merchant = wxMerchantService.selectById(activityRecord.getMerchantId()); | |||
| activityRecord.setBusinessId(merchant.getBusinessId()); | |||
| } | |||
| wxOfflineActivityRecordMapper.insert(activityRecord); | |||
| } | |||
| @Override | |||
| public void syncOfflineActivityRecord(List<WxLegionActivityOrder> wxLegionActivityOrders) { | |||
| if(wxLegionActivityOrders == null || wxLegionActivityOrders.isEmpty()){ | |||
| return; | |||
| } | |||
| IdWorker idWorker = IdWorker.get(); | |||
| List<Long> merchantIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | |||
| WxMerchant merchantQ = new WxMerchant(); | |||
| merchantQ.setIds(merchantIds); | |||
| Map<Long, WxMerchant> merchantMap = wxMerchantService.findMerchantMap(merchantQ); | |||
| List<WxOfflineActivityRecord> activityRecordList = new ArrayList<>(); | |||
| for (WxLegionActivityOrder legionActivityOrder : wxLegionActivityOrders) { | |||
| WxOfflineActivityRecord activityRecord = createOfflineActivityRecord(legionActivityOrder); | |||
| activityRecord.setId(idWorker.nextId()); | |||
| if(activityRecord.getMerchantId() != null){ | |||
| WxMerchant merchant = merchantMap.get(activityRecord.getMerchantId()); | |||
| activityRecord.setBusinessId(merchant.getBusinessId()); | |||
| } | |||
| activityRecordList.add(activityRecord); | |||
| } | |||
| wxOfflineActivityRecordMapper.insertList(activityRecordList); | |||
| } | |||
| private WxOfflineActivityRecord createOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder) { | |||
| WxOfflineActivityRecord activityRecord = new WxOfflineActivityRecord(); | |||
| activityRecord.setId(idWorker.nextId()); | |||
| activityRecord.updateTenantInfo(legionActivityOrder); | |||
| activityRecord.setFromOrderId(legionActivityOrder.getId()); | |||
| activityRecord.setOrderNo(legionActivityOrder.getOrderNo()); | |||
| @@ -104,7 +139,7 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit | |||
| activityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); | |||
| activityRecord.setAuditBy(legionActivityOrder.getAuditBy()); | |||
| activityRecord.setAuditTime(legionActivityOrder.getAuditTime()); | |||
| wxOfflineActivityRecordMapper.insert(activityRecord); | |||
| return activityRecord; | |||
| } | |||
| } | |||
| @@ -313,12 +313,12 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| @Transactional(rollbackFor = Exception.class) | |||
| public void auditRecord(WxLegionActivityOrder wxLegionActivityOrder, Long userId) { | |||
| Date now = new Date(); | |||
| wxLegionActivityOrder.setUpdateDate(now); | |||
| wxLegionActivityOrder.setAuditTime(now); | |||
| wxLegionActivityOrder.setAuditBy(userId); | |||
| wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrder); | |||
| wxLegionActivityOrder.setAuditTime(now); | |||
| wxLegionActivityOrder.setUpdateDate(now); | |||
| Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrder); | |||
| if(EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode().equals(wxLegionActivityOrder.getAuditStatus())){ | |||
| if(upd == 1 && EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode().equals(wxLegionActivityOrder.getAuditStatus())){ | |||
| //同步订单 | |||
| WxLegionActivityOrder legionActivityOrder = wxLegionActivityOrderMapper.selectById(wxLegionActivityOrder.getId(), wxLegionActivityOrder.getTenantId()); | |||
| WxLegionActivityUser user = wxLegionActivityUserMapper.selectById(legionActivityOrder.getCusId(), legionActivityOrder.getTenantId()); | |||
| @@ -329,6 +329,10 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| legionActivityOrder.setLotteryCount(wxLegionActivityOrder.getLotteryCount()); | |||
| legionActivityOrder.setAnniversaryLotteryNum(wxLegionActivityOrder.getAnniversaryLotteryNum()); | |||
| legionActivityOrder.setAuditBy(wxLegionActivityOrder.getAuditBy()); | |||
| legionActivityOrder.setAuditTime(wxLegionActivityOrder.getAuditTime()); | |||
| legionActivityOrder.setUpdateDate(wxLegionActivityOrder.getUpdateDate()); | |||
| wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(legionActivityOrder); | |||
| } | |||
| @@ -568,6 +572,49 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||
| excelService.exportExcel(activitySellOrder, null, "军团带单数据("+legionTypeStr+")", LegionActivitySellOrder.class, "军团带单数据("+legionTypeStr+").xlsx", response, false); | |||
| } | |||
| @Override | |||
| @Transactional(rollbackFor = Exception.class) | |||
| public void batchAudiPass(TenantEntity tenantEntity, List<Long> ids, Long userId) { | |||
| WxLegionActivityOrder wxLegionActivityOrderQ = new WxLegionActivityOrder(); | |||
| wxLegionActivityOrderQ.updateTenantInfo(tenantEntity); | |||
| wxLegionActivityOrderQ.setIds(ids); | |||
| List<WxLegionActivityOrder> wxLegionActivityOrders = wxLegionActivityOrderMapper.findList(wxLegionActivityOrderQ); | |||
| List<WxLegionActivityOrder> syncOrders = wxLegionActivityOrders.stream() | |||
| .filter(wxLegionActivityOrder -> !EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode().equals(wxLegionActivityOrder.getAuditStatus())) | |||
| .collect(Collectors.toList()); | |||
| if (syncOrders.isEmpty()){ | |||
| throw new MallinkException(Result.ERROR,"未查询到可审核的订单"); | |||
| } | |||
| Date now = new Date(); | |||
| WxLegionActivityOrder wxLegionActivityOrderUpd = new WxLegionActivityOrder(); | |||
| wxLegionActivityOrderUpd.updateTenantInfo(tenantEntity); | |||
| wxLegionActivityOrderUpd.setIds(ids); | |||
| wxLegionActivityOrderUpd.setAuditStatus(EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode()); | |||
| wxLegionActivityOrderUpd.setAuditBy(userId); | |||
| wxLegionActivityOrderUpd.setAuditTime(now); | |||
| wxLegionActivityOrderUpd.setUpdateDate(now); | |||
| Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrderUpd); | |||
| List<Long> userIds = syncOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); | |||
| WxLegionActivityUser userQ = new WxLegionActivityUser(); | |||
| userQ.updateTenantInfo(tenantEntity); | |||
| userQ.setIds(userIds); | |||
| Map<Long, WxLegionActivityUser> activityUserMap = wxLegionActivityUserService.findUserMap(userQ); | |||
| for (WxLegionActivityOrder legionActivityOrder : syncOrders) { | |||
| WxLegionActivityUser user = activityUserMap.get(legionActivityOrder.getCusId()); | |||
| legionActivityOrder.setCusPhone(user.getPhone()); | |||
| legionActivityOrder.setCusVipNum(user.getVipNum()); | |||
| legionActivityOrder.setAuditBy(userId); | |||
| legionActivityOrder.setAuditTime(now); | |||
| legionActivityOrder.setUpdateDate(now); | |||
| } | |||
| wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(syncOrders); | |||
| } | |||
| } | |||
| @@ -170,6 +170,12 @@ | |||
| #{midItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| </update> | |||
| <select id="auditStatusStatistics" parameterType="com.iformall.domain.po.WxLegionActivityOrder" resultType="com.iformall.domain.vo.LegionActivityOrderStatistics"> | |||
| @@ -247,4 +247,25 @@ | |||
| where rg.grant_id = #{grantId} and rg.tenant_id=#{tenantId} | |||
| </select> | |||
| <insert id="insertList" parameterType="java.util.List"> | |||
| insert into wx_offline_activity_record | |||
| (id, | |||
| from_order_id,order_no,order_money,cus_name, | |||
| real_cus_name,cus_phone,cus_address, | |||
| cus_card,lottery_num,lottery_count, | |||
| anniversary_lottery_num,create_by,merchant_id,business_id, | |||
| create_date,update_date,audit_remark, | |||
| audit_status,audit_by,audit_time) | |||
| values | |||
| <foreach collection="recordList" item="item" index="index" separator=","> | |||
| (#{item.id,jdbcType=BIGINT}, | |||
| #{item.fromOrderId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL},#{item.cusName,jdbcType=VARCHAR}, | |||
| #{item.realCusName,jdbcType=VARCHAR},#{item.cusPhone,jdbcType=VARCHAR},#{item.cusAddress,jdbcType=VARCHAR}, | |||
| #{item.cusCard,jdbcType=VARCHAR},#{item.lotteryNum,jdbcType=VARCHAR},#{item.lotteryCount,jdbcType=INTEGER}, | |||
| #{item.anniversaryLotteryNum,jdbcType=VARCHAR},#{item.createBy,jdbcType=BIGINT},#{item.merchantId,jdbcType=BIGINT},#{item.businessId,jdbcType=INTEGER}, | |||
| #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP},#{item.auditRemark,jdbcType=VARCHAR}, | |||
| #{item.auditStatus,jdbcType=INTEGER},#{item.auditBy,jdbcType=BIGINT},#{item.auditTime,jdbcType=TIMESTAMP}) | |||
| </foreach> | |||
| </insert> | |||
| </mapper> | |||