Explorar o código

201900704 活动修改

suochencheng %!s(int64=6) %!d(string=hai) anos
pai
achega
d448c1e632

+ 6 - 0
log.txt

@@ -493,3 +493,9 @@ Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter
 	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
 	... 48 more
 [2019-06-20 18:26:05] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
+[2019-07-04 17:09:55] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
+[2019-07-04 17:25:37] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
+[2019-07-04 17:27:12] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
+[2019-07-04 17:28:38] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
+[2019-07-04 17:30:53] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
+[2019-07-04 17:37:48] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.

+ 2 - 0
src/main/java/com/izouma/awesomeadmin/dao/ClientOrderMapper.java

@@ -31,5 +31,7 @@ public interface ClientOrderMapper{
     ClientOrder querySingleClientOrder(ClientOrder record);
 
     List<ClientOrder> query(ClientOrder record);
+
+    int confirm(ClientOrder clientOrder);
 }
 

+ 34 - 0
src/main/java/com/izouma/awesomeadmin/dao/ClientOrderMapper.xml

@@ -989,6 +989,40 @@
             id in (${idStr})
         </if>
     </update>
+
+    <update id="confirm">
+        UPDATE client_order
+        SET status_flag = 5
+        WHERE
+        del_flag = 'N'
+        AND status_flag <![CDATA[ < ]]> 5
+        AND (
+        SELECT
+        SUM(
+        CASE
+        WHEN status_flag  <![CDATA[ >= ]]> 5
+        AND (
+        album_quantity    <![CDATA[ <= ]]> 0
+        OR (
+        album_quantity <![CDATA[ > ]]> 0
+        AND album_status = 3
+        )
+        ) THEN
+        1
+        ELSE
+        0
+        END
+        ) = COUNT(1)
+        FROM
+        user_order
+        WHERE
+        del_flag = 'N'
+        AND client_order_id = client_order.id
+        )
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            and id = #{id,jdbcType=INTEGER}
+        </if>
+    </update>
     <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.ClientOrder">
         select
         <include refid="Base_Column_List"/>

+ 2 - 0
src/main/java/com/izouma/awesomeadmin/service/ClientOrderService.java

@@ -38,5 +38,7 @@ public interface ClientOrderService {
     double calculatedPrice(String orderId, double coin, double point);
 
     void alipaySuccess(String tradeNo, String tradeStatus);
+
+    Result confirm(Integer clientOrderId);
 }
 

+ 9 - 5
src/main/java/com/izouma/awesomeadmin/service/impl/ActivityInfoServiceImpl.java

@@ -184,7 +184,7 @@ public class ActivityInfoServiceImpl implements ActivityInfoService {
                 double rate = Double.valueOf(activityInfo.getRatio());
 
                 //消费金额  余额和现金
-                int consumptionMoney = userOrder.getCash().add(userOrder.getCoin()).intValue();
+                int consumptionMoney = userOrder.getCash() != null ? userOrder.getCash().add(userOrder.getCoin()).intValue() : userOrder.getCoin().intValue();
 
                 //反积分份数
                 int pointTimes = (int) Math.floor(consumptionMoney * 1.0 / minValue);
@@ -227,7 +227,9 @@ public class ActivityInfoServiceImpl implements ActivityInfoService {
                         activityLog.setUserId(String.valueOf(userId));
                         activityLog.setPoint(String.valueOf(point));
                         activityLog.setCoin(String.valueOf(userOrder.getCoin()));
-                        activityLog.setCash(String.valueOf(userOrder.getCash()));
+                        if (userOrder.getCash() != null) {
+                            activityLog.setCash(String.valueOf(userOrder.getCash()));
+                        }
                         activityLog.setTotalPrice(String.valueOf(userOrder.getDealPrice()));
                         activityLog.setOrderId(String.valueOf(userOrder.getId()));
                         activityLog.setStoreId(String.valueOf(userOrder.getStoreId()));
@@ -276,10 +278,13 @@ public class ActivityInfoServiceImpl implements ActivityInfoService {
 
                 int point = (int) Math.floor(rechargeMoney * rate / 100);
 
-                if (rechargeMoney >= minValue) {//如果充值金额大于要求,可用赠送积分
+                if (rechargeMoney >= minValue && point > 0) {//如果充值金额大于要求,可用赠送积分
+
+                    int userId = Integer.valueOf(rechargeRecord.getUserId());
 
                     ActivityLog checkLimit = new ActivityLog();
                     checkLimit.setTypeId(String.valueOf(activityInfo.getTypeId()));
+                    checkLimit.setUserId(String.valueOf(userId));
 
                     checkLimit = activityLogMapper.queryLimitActivityLog(checkLimit);
 
@@ -290,10 +295,9 @@ public class ActivityInfoServiceImpl implements ActivityInfoService {
 
                     MemberPoint memberPoint = new MemberPoint();
                     memberPoint.setMoney(String.valueOf(point));
-                    memberPoint.setUserId(String.valueOf(rechargeRecord.getUserId()));
+                    memberPoint.setUserId(String.valueOf(userId));
 
 
-                    int userId = Integer.valueOf(rechargeRecord.getUserId());
                     UserInfo userInfo = userInfoMapper.selectByPrimaryKey(userId);
 
                     if (userInfo != null) {

+ 28 - 5
src/main/java/com/izouma/awesomeadmin/service/impl/ClientOrderServiceImpl.java

@@ -268,19 +268,19 @@ public class ClientOrderServiceImpl implements ClientOrderService {
                         userOrder.setSpecification(specification);
                         userOrder.setUnitPrice(unitPrice);
 
-                        BigDecimal userOrderImagesPrice = BigDecimal.valueOf(userOrder.getQuantity().doubleValue() / record.getQuantity()).multiply(
-                                imagesPrice.divide(totlePrice, 2, BigDecimal.ROUND_HALF_UP).multiply(dealPrice));
+                        BigDecimal userOrderImagesPrice = BigDecimal.valueOf(userOrder.getQuantity()).divide(BigDecimal.valueOf(record.getQuantity()), 10, BigDecimal.ROUND_HALF_UP).multiply(
+                                imagesPrice.divide(totlePrice, 10, BigDecimal.ROUND_HALF_UP).multiply(dealPrice));
 
                         BigDecimal userOrderAlbumTotalPrice = BigDecimal.ZERO;
 
                         if (record.getAlbumQuantity() > 0 && userOrder.getAlbumQuantity() > 0 && albumTotalPrice.compareTo(BigDecimal.ZERO) > 0) {
 
 
-                            userOrderAlbumTotalPrice = BigDecimal.valueOf(userOrder.getAlbumQuantity().doubleValue() / record.getAlbumQuantity()).multiply(
-                                    albumTotalPrice.divide(totlePrice, 2, BigDecimal.ROUND_HALF_UP).multiply(dealPrice));
+                            userOrderAlbumTotalPrice = BigDecimal.valueOf(userOrder.getAlbumQuantity()).divide(BigDecimal.valueOf(record.getAlbumQuantity()), 10, BigDecimal.ROUND_HALF_UP).multiply(
+                                    albumTotalPrice.divide(totlePrice, 10, BigDecimal.ROUND_HALF_UP).multiply(dealPrice));
                         }
 
-                        BigDecimal userOrderPrice = userOrderImagesPrice.add(userOrderAlbumTotalPrice);
+                        BigDecimal userOrderPrice = userOrderImagesPrice.add(userOrderAlbumTotalPrice).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                         userOrder.setTotlePrice(userOrderPrice);
                         userOrder.setDealPrice(userOrderPrice);
@@ -353,6 +353,29 @@ public class ClientOrderServiceImpl implements ClientOrderService {
     }
 
 
+    @Override
+    public Result confirm(Integer orderId) {
+
+        logger.info("confirm:确认订单");
+        try {
+
+            ClientOrder clientOrder = new ClientOrder();
+
+            clientOrder.setId(orderId);
+
+            int updates = clientOrderMapper.confirm(clientOrder);
+
+            if (updates > 0) {
+                return new Result(true, "确认成功");
+            }
+
+
+        } catch (Exception e) {
+            logger.error("confirm:确认订单异常", e);
+        }
+        return new Result(false, "确认失败");
+    }
+
     @Override
     public Result payOrder(String orderId, double coin, double point, double cash, int payMode) {
 

+ 48 - 42
src/main/java/com/izouma/awesomeadmin/service/impl/UserOrderServiceImpl.java

@@ -103,6 +103,9 @@ public class UserOrderServiceImpl implements UserOrderService {
     @Autowired
     private ClientNoticeService clientNoticeService;
 
+    @Autowired
+    private ClientOrderService clientOrderService;
+
 
     @Override
     public List<UserOrder> getUserOrderList(UserOrder record) {
@@ -888,7 +891,10 @@ public class UserOrderServiceImpl implements UserOrderService {
                         storeInfoService.calculateRate(userOrder.getStoreId() + "");
                     }
 
-
+                    if ("Y".equals(userOrder.getClientFlag())) {
+                        //clientOrderService.confirm(userOrder.getClientOrderId());
+                        clientOrderService.confirm(null);
+                    }
                 }
 
 
@@ -918,66 +924,66 @@ public class UserOrderServiceImpl implements UserOrderService {
 
                 if (AppConstant.OrderStatus.FINISH == userOrder.getStatusFlag() && !"Y".equals(userOrder.getJieSuan())) {
 
-                    if (userOrder.getAlbumQuantity() > 0 && AppConstant.OrderAlbumStatus.FINISH == userOrder.getAlbumStatus()) {
+                    if ((userOrder.getAlbumQuantity() > 0 && AppConstant.OrderAlbumStatus.FINISH == userOrder.getAlbumStatus()) || userOrder.getAlbumQuantity() <= 0) {
 
-                    }
-                    MemberCoin checkMemberCoin = new MemberCoin();
-                    checkMemberCoin.setUserId(userOrder.getProductInfo().getStoreInfo().getUserId() + "");
-                    checkMemberCoin.setOrderId(orderId);
-                    checkMemberCoin.setTypeFlag(AppConstant.CoinType.SALE);
 
-                    checkMemberCoin = memberCoinService.getMemberCoin(checkMemberCoin);
+                        MemberCoin checkMemberCoin = new MemberCoin();
+                        checkMemberCoin.setUserId(userOrder.getProductInfo().getStoreInfo().getUserId() + "");
+                        checkMemberCoin.setOrderId(orderId);
+                        checkMemberCoin.setTypeFlag(AppConstant.CoinType.SALE);
 
-                    if (checkMemberCoin == null) {
+                        checkMemberCoin = memberCoinService.getMemberCoin(checkMemberCoin);
 
-                        StoreInfo storeInfo = userOrder.getProductInfo().getStoreInfo();
+                        if (checkMemberCoin == null) {
 
-                        UserInfo shangJiaUser = userInfoService.getUserInfoById(storeInfo.getUserId() + "");
+                            StoreInfo storeInfo = userOrder.getProductInfo().getStoreInfo();
 
-                        SystemConfig systemConfig = systemConfigMapper.selectByPrimaryKey(1);
+                            UserInfo shangJiaUser = userInfoService.getUserInfoById(storeInfo.getUserId() + "");
 
-                        double money = userOrder.getDealPrice().doubleValue();
+                            SystemConfig systemConfig = systemConfigMapper.selectByPrimaryKey(1);
 
+                            double money = userOrder.getDealPrice().doubleValue();
 
-                        double shangJiaCoin = shangJiaUser.getMoneyCoin();
-                        double fee = 0;
 
+                            double shangJiaCoin = shangJiaUser.getMoneyCoin();
+                            double fee = 0;
 
-                        if ("Y".equals(systemConfig.getUseFlag())) {//使用默认抽成比率
-                            fee = money * Double.valueOf(systemConfig.getOrderRate()) / 100.0;
-                        }
 
-                        if ("Y".equals(storeInfo.getRateFlag())) {//如果使用店铺自己的抽成比率
-                            fee = money * Double.valueOf(storeInfo.getOrderRate()) / 100.0;
-                        }
+                            if ("Y".equals(systemConfig.getUseFlag())) {//使用默认抽成比率
+                                fee = money * Double.valueOf(systemConfig.getOrderRate()) / 100.0;
+                            }
 
-                        //更新商家余额
-                        MemberCoin memberCoin = new MemberCoin();
-                        memberCoin.setCreateUser("系统");
-                        memberCoin.setUserId(shangJiaUser.getId() + "");
-                        memberCoin.setOrderId(orderId);
-                        memberCoin.setMoney(String.valueOf(money - fee));
-                        memberCoin.setBalance(String.valueOf(shangJiaCoin + money - fee));
-                        memberCoin.setTypeFlag(AppConstant.CoinType.SALE);
-                        memberCoin.setRemark("售卖商品获得" + money + "订单号:" + userOrder.getOrderCode() + ";服务费:" + fee);
-                        memberCoinService.createMemberCoin(memberCoin);
+                            if ("Y".equals(storeInfo.getRateFlag())) {//如果使用店铺自己的抽成比率
+                                fee = money * Double.valueOf(storeInfo.getOrderRate()) / 100.0;
+                            }
 
+                            //更新商家余额
+                            MemberCoin memberCoin = new MemberCoin();
+                            memberCoin.setCreateUser("系统");
+                            memberCoin.setUserId(shangJiaUser.getId() + "");
+                            memberCoin.setOrderId(orderId);
+                            memberCoin.setMoney(String.valueOf(money - fee));
+                            memberCoin.setBalance(String.valueOf(shangJiaCoin + money - fee));
+                            memberCoin.setTypeFlag(AppConstant.CoinType.SALE);
+                            memberCoin.setRemark("售卖商品获得" + money + "订单号:" + userOrder.getOrderCode() + ";服务费:" + fee);
+                            memberCoinService.createMemberCoin(memberCoin);
 
-                        UserInfo updateShangJia = new UserInfo();
-                        updateShangJia.setId(shangJiaUser.getId());
-                        updateShangJia.setMoneyCoin(shangJiaCoin + money - fee);
-                        userInfoService.updateUserInfo(updateShangJia);
 
-                        //消费反积分
-                        activityInfoService.consumptionSongMoney(userOrder);
+                            UserInfo updateShangJia = new UserInfo();
+                            updateShangJia.setId(shangJiaUser.getId());
+                            updateShangJia.setMoneyCoin(shangJiaCoin + money - fee);
+                            userInfoService.updateUserInfo(updateShangJia);
 
-                        UserOrder updateUserOrder = new UserOrder();
-                        updateUserOrder.setId(userOrder.getId());
-                        updateUserOrder.setJieSuan("Y");
-                        userOrderMapper.updateByPrimaryKeySelective(updateUserOrder);
+                            //消费反积分
+                            activityInfoService.consumptionSongMoney(userOrder);
 
-                    }
+                            UserOrder updateUserOrder = new UserOrder();
+                            updateUserOrder.setId(userOrder.getId());
+                            updateUserOrder.setJieSuan("Y");
+                            userOrderMapper.updateByPrimaryKeySelective(updateUserOrder);
 
+                        }
+                    }
 
                 }
 

+ 11 - 1
src/main/java/com/izouma/awesomeadmin/web/ClientOrderController.java

@@ -204,8 +204,18 @@ public class ClientOrderController {
 
     }
 
+    /**
+     * 确认订单
+     *
+     * @param record
+     * @return
+     */
+    @RequestMapping(value = "/confirm", method = RequestMethod.POST)
+    @ResponseBody
+    public Result confirm(ClientOrder record) {
 
-
+        return clientOrderService.confirm(record.getId());
+    }
 
 
 }

+ 8 - 0
src/main/java/com/izouma/awesomeadmin/web/UserOrderController.java

@@ -380,6 +380,14 @@ public class UserOrderController {
 
     }
 
+    @RequestMapping(value = "/handJieSuan", method = RequestMethod.POST)
+    @ResponseBody
+    public Result handJieSuan(@RequestParam(required = true, value = "orderId") String orderId) {
+
+        return userOrderService.jieSuan(orderId);
+
+    }
+
 
     /**
      * <p>返修。</p>

+ 22 - 0
src/main/vue/src/pages/UserOrders.vue

@@ -117,6 +117,11 @@
               <el-button @click="$router.push({path:'/OrderRepairs',query:{column:scope.row.id+',orderId'}})" type="primary" size="small" plain>返修</el-button>
               <!-- <el-button @click="$router.push({path:'/OrderInvoices',query:{column:scope.row.id+',orderId'}})" type="primary" size="small" plain>发票</el-button> -->
               <el-button @click="cleanOssRow(scope.row)" type="danger" size="mini" plain>清理OSS</el-button>
+
+              <template v-if="scope.row.statusFlag==5||scope.row.statusFlag==6">
+                <el-button  @click="jieSuan(scope.row)" type="success" size="small" plain>结算</el-button>
+              </template>
+
             </el-dropdown-menu>
           </el-dropdown>
         </template>
@@ -734,6 +739,23 @@ export default {
         }
       })
     },
+    jieSuan(row) {
+      this.$alert('结算后将无法恢复,确认要结算么?', '警告', { type: 'error' }).then(() => {
+        return this.$http.post({
+          url: '/userOrder/handJieSuan',
+          data: { orderId: row.id }
+        })
+      }).then(() => {
+        this.$message.success('成功');
+        this.getData();
+      }).catch(action => {
+        if (action === 'cancel') {
+          this.$message.info('取消');
+        } else {
+          this.$message.error('失败');
+        }
+      })
+    },
     DateTimeFormatter(row, column, cellValue) {
       if (cellValue) {
         return format(cellValue, 'YYYY/MM/DD HH:mm', { locale: zh })

+ 28 - 0
src/test/java/CommonTest.java

@@ -1,6 +1,8 @@
+import org.apache.poi.util.SystemOutLogger;
 import org.junit.Test;
 
 import java.io.*;
+import java.math.BigDecimal;
 import java.nio.file.Paths;
 
 public class CommonTest {
@@ -28,4 +30,30 @@ public class CommonTest {
         System.out.println("1111111111111111");
     }
 
+    @Test
+    public void test3() {
+        BigDecimal imagesPrice = BigDecimal.valueOf(0.09);
+        BigDecimal totlePrice = BigDecimal.valueOf(20.09);
+        BigDecimal dealPrice = BigDecimal.valueOf(20.09);
+        BigDecimal orderNum = BigDecimal.valueOf(3);
+        BigDecimal totalNum = BigDecimal.valueOf(9);
+        BigDecimal userOrderImagesPrice = orderNum.divide(totalNum, 10, BigDecimal.ROUND_HALF_UP).multiply(
+                imagesPrice.divide(totlePrice, 10, BigDecimal.ROUND_HALF_UP).multiply(dealPrice));
+
+        BigDecimal userOrderAlbumTotalPrice = BigDecimal.ZERO;
+
+
+        BigDecimal userOrderPrice = userOrderImagesPrice.add(userOrderAlbumTotalPrice);
+
+        System.out.println("userOrderPrice" + userOrderPrice.setScale(2, BigDecimal.ROUND_HALF_UP));
+    }
+
+    @Test
+    public void test4() {
+        BigDecimal dealPrice = BigDecimal.valueOf(20.99);
+
+
+        System.out.println("dealPrice" + dealPrice.intValue());
+    }
+
 }

+ 78 - 3
src/test/java/OrderServiceTest.java

@@ -1,9 +1,9 @@
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.model.*;
+import com.izouma.awesomeadmin.dao.UserInfoMapper;
+import com.izouma.awesomeadmin.dao.UserOrderMapper;
 import com.izouma.awesomeadmin.dto.Result;
-import com.izouma.awesomeadmin.model.CompanyAuthentication;
-import com.izouma.awesomeadmin.model.OrderAlbum;
-import com.izouma.awesomeadmin.model.PersonalAuthentication;
+import com.izouma.awesomeadmin.model.*;
 import com.izouma.awesomeadmin.service.*;
 import com.izouma.awesomeadmin.util.DateTimeTool;
 import com.izouma.awesomeadmin.util.MbappUtil;
@@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.math.BigDecimal;
 import java.util.*;
 
 @RunWith(value = SpringJUnit4ClassRunner.class)
@@ -37,6 +38,14 @@ public class OrderServiceTest {
     @Autowired
     private OrderAlbumService orderAlbumService;
 
+    @Autowired
+    private ActivityInfoService activityInfoService;
+    @Autowired
+    private UserOrderMapper userOrderMapper;
+
+    @Autowired
+    private UserInfoMapper userInfoMapper;
+
     @Test
     public void testGenOrderID() {
         String machineId = "1";
@@ -234,4 +243,70 @@ public class OrderServiceTest {
             e.printStackTrace();
         }
     }
+
+    @Test
+    public void activityConsumptionSongTest() {
+
+        try {
+
+            String orderId = "341";
+
+            UserOrder userOrder = new UserOrder();
+
+            userOrder.setId(Integer.valueOf(orderId));
+
+            userOrder = userOrderMapper.queryUserOrder(userOrder);
+
+            //消费反积分
+            activityInfoService.consumptionSongMoney(userOrder);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void activityRegisterSongMoneyTest() {
+
+        try {
+
+            String userId = "84664";
+
+            UserInfo userInfo = new UserInfo();
+
+            userInfo.setId(Integer.valueOf(userId));
+
+            userInfo = userInfoMapper.querySingleUserInfo(userInfo);
+
+            activityInfoService.registerSongMoney(userInfo);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void activityRechargeSongMoneyTest() {
+
+        try {
+
+            //充值记录
+            RechargeRecord rechargeRecord = new RechargeRecord();
+            rechargeRecord.setCreateUser("系统");
+            rechargeRecord.setUserId(84664);
+            rechargeRecord.setTypeFlag(0);
+            rechargeRecord.setMoney(BigDecimal.valueOf(500));
+            rechargeRecord.setCash(BigDecimal.valueOf(500));
+            rechargeRecord.setBalance(BigDecimal.valueOf(500));
+            rechargeRecord.setOutTradeNo("1234566");
+            rechargeRecord.setRemark("测试充值:" + 500);
+
+            //充值送积分
+            activityInfoService.rechargeSongMoney(rechargeRecord);
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }