Преглед изворни кода

Accept Merge Request #77: (dev-导出新增 -> master)

Merge Request: 上线合并

Created By: @万新亮
Accepted By: @万新亮
URL: https://chuanghaikeji.coding.net/p/moxuanyunshangwaimai/d/backend/git/merge/77
万新亮 пре 1 година
родитељ
комит
ef49aedace

+ 2 - 0
src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java

@@ -48,4 +48,6 @@ public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
     List<UserMoneyDetails> excelAccountEntry(@Param("query") AccountEntry query);
 
     IPage<UserMoneyDetails> accountEntryAbnormal(Page<UserMoneyDetails> pages,@Param("query") AccountEntry query);
+
+    List<UserMoneyDetails> excelAccountEntryAbnormal(@Param("query") AccountEntry query);
 }

+ 1 - 1
src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java

@@ -53,7 +53,7 @@ public interface UserMoneyDetailsService extends IService<UserMoneyDetails> {
      * @param endTime
      * @return
      */
-    PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime);
+    PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime,String flag);
 
     /**
      * 入账管理导出

+ 20 - 2
src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java

@@ -140,9 +140,22 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
 
 
     @Override
-    public PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime) {
+    public PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime,String flag) {
         IPage<UserMoneyDetails> iPage = new Page<>();
         Integer row=(page-1)*limit;
+        if("1".equals(flag)){
+            Page<UserMoneyDetails> pages = new Page<>(page, limit);
+            AccountEntry query = new AccountEntry();
+            query.setEndTime(endTime);
+            query.setShopName(shopName);
+            query.setStartTime(startTime);
+            query.setUserPhone(userPhone);
+            query.setCouponName(couponName);
+            query.setOrderNumber(orderNumber);
+            query.setShopPhone(shopPhone);
+            PageUtils pageUtils = new PageUtils(baseMapper.accountEntryAbnormal(pages, query));
+            return pageUtils;
+        }
         List<UserMoneyDetails> userMoneyDetailsList = baseMapper.accountEntryManagementDetailsList(row,limit, shopName, shopPhone, userPhone, couponName, orderNumber, startTime, endTime);
 //        查询每条成功的短信金额
         CommonInfo commonInfo = commonInfoDao.findOne(421);
@@ -208,7 +221,12 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
      */
     @Override
     public ExcelData excelAccountEntry(AccountEntry query) {
-        List<UserMoneyDetails> userMoneyDetailsList = baseMapper.excelAccountEntry(query);
+        List<UserMoneyDetails> userMoneyDetailsList;
+        if("1".equals(query.getFlag())){
+            userMoneyDetailsList = baseMapper.excelAccountEntryAbnormal(query);
+        }else{
+            userMoneyDetailsList = baseMapper.excelAccountEntry(query);
+        }
         ExcelData data = new ExcelData();
         data.setName("入账管理");
         List<String> titleList=Arrays.asList(

+ 3 - 1
src/main/java/com/sqx/modules/datacentre/service/impl/DataCentreServiceImpl.java

@@ -271,6 +271,7 @@ public class DataCentreServiceImpl implements DataCentreService {
             row.add(tbOrder.getShopTypeName());
             row.add(tbOrder.getRank());
             row.add(tbOrder.getShopMoney());
+            row.add(tbOrder.getShopIncomeMoney());
             rows.add(row);
         }
         data.setRows(rows);
@@ -283,7 +284,8 @@ public class DataCentreServiceImpl implements DataCentreService {
                 "店铺名称",
                 "商铺类型",
                 "排名",
-                "收益");
+                "收益",
+                "实际收入");
     }
     @Override
     public Result selectUserCenter(DataCenterQuery query) {

+ 14 - 7
src/main/java/com/sqx/modules/errand/service/impl/TbIndentServiceImpl.java

@@ -33,10 +33,7 @@ import com.sqx.modules.errand.dto.RiderDeliveryDTO;
 import com.sqx.modules.errand.dto.RiderTransferByOrderIdDTO;
 import com.sqx.modules.errand.dto.RiderTransferOrderDTO;
 import com.sqx.modules.errand.dto.WaitForAcceptOrderQueryDTO;
-import com.sqx.modules.errand.entity.ErrandAddress;
-import com.sqx.modules.errand.entity.ErrandEvaluate;
-import com.sqx.modules.errand.entity.ErrandRedPacket;
-import com.sqx.modules.errand.entity.TbIndent;
+import com.sqx.modules.errand.entity.*;
 import com.sqx.modules.errand.service.TbIndentService;
 import com.sqx.modules.errand.service.TbIndentSmsSendLogService;
 import com.sqx.modules.errand.service.TbIndentSmsTemplateService;
@@ -1078,6 +1075,11 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
         MyGlobalThreadPool.execute(() -> {
             try {
                 // 发送短信并记录短信发送记录
+                TbIndentSmsSendLog tbIndentSmsSendLog=smsSendLogService.getSendSuccessByOrderId(indentOrder.getIndentId());
+                if(tbIndentSmsSendLog!=null){
+                    log.error("外卖跑腿订单id【{}】短信已发送成功,短信id【{}】",tbIndentSmsSendLog.getOrderId(),tbIndentSmsSendLog.getId());
+                    return;
+                }
                 SmsSendResult smsSendResult = smsTemplateService.sendSms(smsTemplateId, riderUser, userPhone);
                 // sourceType 1骑手、2商家
                 smsSendLogService.saveLog(indentOrder.getIndentId(), "1", smsSendResult);
@@ -1224,7 +1226,7 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
             status = transactionManager.getTransaction(new DefaultTransactionDefinition());
             // 如果是外卖订单
             if (ObjectUtil.equal(indentOrder.getIndentType(), "5")) {
-                handTakeoutOrder(indentOrder, userId, deliveryDTO);
+                 handTakeoutOrder(indentOrder, userId, deliveryDTO);
             }
 
             Result result = finshOrder(userId, indentNumber, deliveryDTO.getItemCode());
@@ -1250,10 +1252,10 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
      */
     private void handTakeoutOrder(TbIndent indentOrder, Long userId, RiderDeliveryDTO deliveryDTO) {
         // 6表示跑腿订单处于已完成状态
+        //锁内用锁外数据进行判断会拿等待锁前的数据判断
         if ("6".equals(indentOrder.getIndentState())) {
             return;
         }
-
         Long smsTemplateId = deliveryDTO.getSmsTemplateId();
         if (ObjectUtil.isNull(smsTemplateId)) {
             throw new SqxException("短信模板id不能为空");
@@ -1281,7 +1283,12 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
             tbOrder.setDeliveryImgs(imgs);
             appOrderService.updateById(tbOrder);
         }
-
+        TbIndentSmsSendLog tbIndentSmsSendLog=smsSendLogService.getSendSuccessByOrderId(indentOrder.getIndentId());
+//        有发送成功记录则不再发送
+        if(tbIndentSmsSendLog!=null){
+            log.error("外卖跑腿订单【{}】短信已发送成功,短信id【{}】", deliveryDTO.getIndentNumber(),tbIndentSmsSendLog.getId());
+            return;
+        }
         // 发送短信并记录短信发送记录
         SmsSendResult smsSendResult = smsTemplateService.sendSms(smsTemplateId, riderUser, userPhone);
         // sourceType 1骑手、2商家

+ 4 - 1
src/main/java/com/sqx/modules/exportExecl/dto/AccountEntry.java

@@ -15,6 +15,7 @@ public class AccountEntry extends PageQuery {
     private String startTime;
     private String endTime;
     private String userId;
+    private String flag;
 
     public String toStrMessage() {
         return (StringUtils.hasText(shopName) ? "商铺名称:" + shopName + ";" : "") +
@@ -23,7 +24,8 @@ public class AccountEntry extends PageQuery {
                 (StringUtils.hasText(couponName) ? "优惠活动:" + couponName + ";" : "") +
                 (StringUtils.hasText(orderNumber) ? "订单号:" + orderNumber + ";" : "") +
                 (StringUtils.hasText(startTime) ? "开始时间:" + startTime + ";" : "") +
-                (StringUtils.hasText(endTime) ? "结束时间:" + endTime + ";" : "");
+                (StringUtils.hasText(endTime) ? "结束时间:" + endTime + ";" : "")+
+                ("1".equals(flag) ? "是否异常订单: 是;" : "是否异常订单:否");
     }
 
     public String toStrCode() {
@@ -35,6 +37,7 @@ public class AccountEntry extends PageQuery {
                 +","+(orderNumber==null?"":orderNumber)
                 +","+(startTime==null?"":startTime)
                 +","+(endTime==null?"":endTime)
+                +","+(flag==null?"":flag)
                 +",";
     }
 }

+ 1 - 1
src/main/java/com/sqx/modules/goods/entity/GoodsShop.java

@@ -180,7 +180,7 @@ public class GoodsShop implements Serializable {
     private Integer reservationOpenFlag;
 
     @ApiModelProperty("商户id")
-    @TableField(updateStrategy = FieldStrategy.IGNORED)
+//    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String mchId;
 
     /**

+ 18 - 11
src/main/java/com/sqx/modules/goods/service/impl/GoodsShopServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -264,18 +265,24 @@ public class GoodsShopServiceImpl extends ServiceImpl<GoodsShopDao, GoodsShop> i
 //            sendMsgDXB(goodsShop.getPhone(), null, 1);
             userService.sendMsg(goodsShop.getPhone(),"weigui");
         }
-        baseMapper.updateById(goodsShop);
+//        baseMapper.updateById(goodsShop);
+        //更新商户号、snCode、打印机参数为空设置为null
+        baseMapper.update(goodsShop,Wrappers.<GoodsShop>lambdaUpdate()
+                .eq(GoodsShop::getShopId,goodsShop.getShopId())
+                .set(GoodsShop::getMchId , StringUtils.isEmpty(goodsShop.getMchId())?null:goodsShop.getMchId())
+                .set(GoodsShop::getSnCode , StringUtils.isEmpty(goodsShop.getSnCode())?null:goodsShop.getSnCode())
+                .set(GoodsShop::getValue , StringUtils.isEmpty(goodsShop.getValue())?null:goodsShop.getValue()));
         //snCode value
-        if(StringUtils.isEmpty(goodsShop.getSnCode())){
-            baseMapper.update(null, Wrappers.<GoodsShop>lambdaUpdate()
-                    .eq(GoodsShop::getShopId, goodsShop.getShopId())
-                    .set(GoodsShop::getSnCode , null));
-        }
-        if(StringUtils.isEmpty(goodsShop.getValue())){
-            baseMapper.update(null, Wrappers.<GoodsShop>lambdaUpdate()
-                    .eq(GoodsShop::getShopId, goodsShop.getShopId())
-                    .set(GoodsShop::getValue, null));
-        }
+//        if(StringUtils.isEmpty(goodsShop.getSnCode())){
+//            baseMapper.update(null, Wrappers.<GoodsShop>lambdaUpdate()
+//                    .eq(GoodsShop::getShopId, goodsShop.getShopId())
+//                    .set(GoodsShop::getSnCode , null));
+//        }
+//        if(StringUtils.isEmpty(goodsShop.getValue())){
+//            baseMapper.update(null, Wrappers.<GoodsShop>lambdaUpdate()
+//                    .eq(GoodsShop::getShopId, goodsShop.getShopId())
+//                    .set(GoodsShop::getValue, null));
+//        }
         return Result.success();
     }
 

+ 2 - 2
src/main/java/com/sqx/modules/shop/controller/app/ShopMoneyController.java

@@ -183,8 +183,8 @@ public class ShopMoneyController extends AbstractController {
 
     @GetMapping(value = "/accountEntryManagement")
     @ApiOperation("入账管理")
-    public Result accountEntryManagement(Integer page, Integer limit,String shopName,String shopPhone,String userPhone,String couponName,String orderNumber,String startTime,String endTime){
-        PageUtils pageUtils = userMoneyDetailsService.accountEntryManagementDetails(page, limit, shopName, shopPhone, userPhone, couponName, orderNumber, startTime, endTime);
+    public Result accountEntryManagement(Integer page, Integer limit,String shopName,String shopPhone,String userPhone,String couponName,String orderNumber,String startTime,String endTime,String flag){
+        PageUtils pageUtils = userMoneyDetailsService.accountEntryManagementDetails(page, limit, shopName, shopPhone, userPhone, couponName, orderNumber, startTime, endTime,flag);
         return Result.success().put("data", pageUtils);
     }
 

+ 6 - 1
src/main/java/com/sqx/modules/shop/service/impl/ShopMessageServiceImpl.java

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sqx.common.constant.RedisKey;
@@ -314,7 +315,11 @@ public class ShopMessageServiceImpl extends ServiceImpl<ShopMessageDao, GoodsSho
         //     }
         // }
 
-        baseMapper.updateById(goodsShop);
+//        baseMapper.updateById(goodsShop);
+        //更新商户号可为null
+        baseMapper.update(goodsShop,Wrappers.<GoodsShop>lambdaUpdate()
+                .eq(GoodsShop::getShopId,goodsShop.getShopId())
+                .set(GoodsShop::getMchId,StringUtils.isEmpty(goodsShop.getMchId())?null:goodsShop.getMchId()));
 
         redisUtils.delete(String.format(RedisKey.SHOP_INFO_CACHE_KEY, goodsShop.getShopId()));
 

+ 1 - 0
src/main/java/com/sqx/scheduler/export/ExportScheduler.java

@@ -291,6 +291,7 @@ public class ExportScheduler {
         query.setOrderNumber(conditions[5]);
         query.setStartTime(conditions[6]);
         query.setEndTime(conditions[7]);
+        query.setFlag(conditions[8]);
         return userMoneyDetailsService.excelAccountEntry(query);
     }
     //导出骑手收益排行

+ 1 - 1
src/main/resources/mapper/dataCentre/dataCenterMapper.xml

@@ -314,7 +314,7 @@
         @rank_num := @rank_num + 1 AS Rank
         FROM
         ( SELECT @rank_num := 0 ) r,
-        ( SELECT ifnull( sum( pay_money ), 0 ) AS shopMoney, tor.shop_id , u.shop_name,gp.id as
+        ( SELECT ifnull( sum( pay_money ), 0 ) AS shopMoney,ifnull( sum( shop_income_money ), 0 ) AS shopIncomeMoney, tor.shop_id , u.shop_name,gp.id as
         shopType,gp.shop_type_name as shopTypeName
         FROM tb_order tor left join goods_shop u on tor.shop_id = u.shop_id
         left join shop_type gp on gp.id=u.shop_type_id

+ 2 - 2
src/main/resources/mapper/errand/TbIndentSmsSendLogMapper.xml

@@ -28,7 +28,7 @@
                 and issl.send_time >= #{query.startTime}
             </if>
             <if test="query.endTime != null">
-                and issl.send_time <![CDATA[<=]]> #{query.endTime}
+                and issl.send_time <![CDATA[<=]]> concat(#{query.endTime},' 23:59:59')
             </if>
         </where>
         order by issl.send_time desc
@@ -60,7 +60,7 @@
                 and issl.send_time >= #{query.startTime}
             </if>
             <if test="query.endTime != null">
-                and issl.send_time <![CDATA[<=]]> #{query.endTime}
+                and issl.send_time <![CDATA[<=]]> concat(#{query.endTime},' 23:59:59')
             </if>
         </where>
         order by issl.send_time desc

+ 86 - 0
src/main/resources/mapper/userMoney/UserMoneyDetailsMapper.xml

@@ -401,4 +401,90 @@
         </if>
         ORDER BY umd2.id desc
     </select>
+
+    <select id="excelAccountEntryAbnormal" resultType="com.sqx.modules.app.entity.UserMoneyDetails">
+        SELECT
+        umd2.id,
+        umd2.orderNumber,
+        umd2.user_id as userId,
+        umd2.shop_id as shopId,
+        umd2.title,
+        umd2.content,
+        umd2.type,
+        umd2.classify,
+        umd2.money,
+        umd2.create_time as createTime,
+        umd2.state,
+        tbu.user_name as userName,
+        tbu.phone as userPhone,
+        gs.shop_name as shopName,
+        gs.phone as shopPhone,
+        tcu.coupon_name as couponName,
+        tcu.money as couponMoney,
+        apr.discount_amount as activityDiscountAmount,
+        tbo.errand_money as errandMoney
+        FROM
+        (
+        SELECT
+        RIGHT( umd.title, 18 ) AS orderNumber,
+        umd.id,
+        umd.user_id,
+        umd.shop_id,
+        umd.title,
+        umd.content,
+        umd.type,
+        umd.classify,
+        umd.money,
+        umd.create_time,
+        umd.state,
+        umd.children_id
+        FROM
+        `user_money_details` umd
+        WHERE
+        umd.type = 1
+        AND umd.classify = 3
+        AND umd.shop_id IS NOT NULL
+        AND umd.state=2
+        AND EXISTS
+        (select
+        umd3.id
+        from
+        `user_money_details` umd3
+        where
+        umd3.title like '商户订单收入%'
+        and umd.title =umd3.title
+        group by umd3.title
+        HAVING COUNT(*) > 1)
+        ) umd2
+        LEFT JOIN tb_order tbo on tbo.order_number=umd2.orderNumber
+        LEFT JOIN tb_user tbu on tbu.user_id=tbo.user_id
+        LEFT JOIN goods_shop gs on gs.shop_id=tbo.shop_id
+        LEFT JOIN tb_coupon_user tcu on tbo.coupon_id = tcu.id
+        LEFT JOIN activity_part_record apr on apr.order_id = tbo.order_id
+        where 1 = 1
+        <if test="query.shopName != null and query.shopName != ''">
+            and gs.shop_name like  concat("%", #{query.shopName}, "%")
+        </if>
+
+        <if test="query.shopPhone != null and query.shopPhone != ''">
+            and gs.phone= #{query.shopPhone}
+        </if>
+
+        <if test="query.userPhone != null and query.userPhone != ''">
+            and tbu.phone=#{query.userPhone}
+        </if>
+
+        <if test="query.couponName != null and query.couponName != ''">
+            and tcu.coupon_name like  concat("%", #{query.couponName}, "%")
+        </if>
+
+        <if test="query.orderNumber != null and query.orderNumber != ''">
+            and tbo.order_number = #{query.orderNumber}
+        </if>
+
+        <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+            and umd2.create_time >= #{query.startTime} and #{query.endTime} >= umd2.create_time
+        </if>
+        ORDER BY umd2.id desc
+    </select>
 </mapper>