项目需求:将购物车中的商品添加到订单表和订单商品表

附上购物车表,订单表和订单商品表字段


shopcartController代码:


@RequestMapping("useraddResult")
@ResponseBody
@SuppressWarnings("null")
public LBResult useraddResult(String addressid, String shopcartids,
String uid, HttpServletRequest request, HttpServletResponse response) {


// 1.
JifenAddressInfo addressInfo = jifenAddressInfoService
.userAddressInfo(addressid);


// 2.根据购物车id查询信息
String[] ids = shopcartids.split(",");
ShoppingCart[] cart = new ShoppingCart[ids.length];
BigDecimal ordersum = new BigDecimal(0);
for (int j = 0; j < ids.length; j++) {
cart[j] = carShopService.carById(ids[j]);
BigDecimal sumBigDecimal1 = cart[j].getLogisticsjifen();
BigDecimal sumBigDecimal2 = new BigDecimal(cart[j].getGoodsnum());
// ordersum = ordersum.add(sumBigDecimal1.multiply(sumBigDecimal2));
ordersum = BigDecimalCalculateUtil
.add(ordersum, BigDecimalCalculateUtil.mul(sumBigDecimal1,
sumBigDecimal2));
}


// 3.根据购物车id,更新购物车状态
List<String> ids1 = null;


if (ids.length > 0) {
List<String> idsList1 = Arrays.asList(ids);


ids1 = new ArrayList<String>(idsList1);
}


int count = carShopService.txbatchUpdateState(ids1);


// 4.生成订单编号


String ordercodeString = LBUtil.getOrderNumber();


// 5.根据订单编号、地址信息、订单总积分、uid,插入订单表


// 获得地址信息表中得字段
String provinceString = addressInfo.getProvince();
String cityString = addressInfo.getCity();
String countryString = addressInfo.getCounty();
String addressnameString = addressInfo.getAddressname();
String addresstelString = addressInfo.getAddresstel();
String addressdetailed = addressInfo.getAddressdetailed();


OrderDetail orderDetail = new OrderDetail();
orderDetail.setOrdercode(ordercodeString);
orderDetail.setOrderstatus("01");
orderDetail.setOrdersum(ordersum);
orderDetail.setId(UUIDGenerator.getUUID());
Date nowDate = DateUtil1.getFormatDate(new Date(),
"yyyy-MM-dd HH:mm:ss");
orderDetail.setCreatetime(nowDate);
orderDetail.setCity(cityString);
orderDetail.setAddressname(addressnameString);
orderDetail.setAddresstel(addresstelString);
orderDetail.setCounty(countryString);
orderDetail.setAddressid(addressid);
orderDetail.setAddressdetailed(addressdetailed);
orderDetailService.txInsert(orderDetail);
// 插入订单结束


// 6.根据订单编号、购物车信息,插入订单商品表


List<OrderGoods> orderGoodsList = new ArrayList<OrderGoods>();


for (int j = 0; j < cart.length; j++) {


OrderGoods orderGoods = new OrderGoods();
orderGoods.setId(UUIDGenerator.getUUID());
orderGoods.setOrdercode(ordercodeString);
orderGoods.setGoodsname(cart[j].getGoodsname());
orderGoods.setGoodscode(cart[j].getGoodscode());
orderGoods.setGoodsnum(cart[j].getGoodsnum());
orderGoods.setImgname(cart[j].getImgname());
orderGoods.setImgaccesspath(cart[j].getImgaccesspath());
orderGoods.setImgpath(cart[j].getImgpath());
orderGoods.setCreatetime(cart[j].getCreatetime());
orderGoodsList.add(orderGoods);
}


int countNum = orderGoodsService.txinsertByBatch(orderGoodsList);
return LBResult.ok(countNum);
}



useraddressInfo方法:

public JifenAddressInfo userAddressInfo(String id) {
// TODO Auto-generated method stub

JifenAddressInfo addressInfo = 
jifenAddressInfoMapper.selectByPrimaryKey(id);
if (LBUtil.isNotEmpty(addressInfo)) {
return addressInfo;
}
return null;
}


批量更新方法:

<!-- 批量更新订单状态 -->
<update id="batchUpdateState"  parameterType="java.util.List">


         update t_jifen_shoppingcart


                  <set>


                    shoppinggoodsstatus="09"


                  </set>


         where id in


                  <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">


                  #{item}


                 </foreach>


   </update>

int batchUpdateState(List<String> ids);//mapper中的写法


serviceImpl层中得方法:


// 批量更新


public int txbatchUpdateState(List<String> ids) {


int count = carShopMapper.batchUpdateState(ids);


return count;
}


批量插入方法:


<insert id="insertByBatch" parameterType="java.util.List">
insert into
t_jifen_order_goods (id, ordercode, goodscode,
goodsname, goodsnum, imgname,
imgpath, imgaccesspath, createtime)
values
<foreach collection="list" item="item" index="index"
separator=",">
(#{item.id,jdbcType=VARCHAR},
#{item.ordercode,jdbcType=INTEGER},
#{item.goodscode,jdbcType=DECIMAL},
#{item.goodsname,jdbcType=VARCHAR},
#{item.goodsnum,jdbcType=INTEGER},
#{item.imgname,jdbcType=VARCHAR},
#{item.imgpath,jdbcType=VARCHAR},
#{item.imgaccesspath,jdbcType=VARCHAR},
#{item.createtime,jdbcType=TIMESTAMP}
)
</foreach>
</insert>


mapper中的写法:

int insertByBatch(List<OrderGoods> orderGoods);


service中得写法:

int txinsertByBatch(List<OrderGoods> orderGoods);


serviceImpl中得写法:


// 批量更新
public int txinsertByBatch(List<OrderGoods> orderGoods) {
int count = orderGoodsMapper.insertByBatch(orderGoods);
return count;
}


----------------------------------------------------结束------------------------------------------------------


版权声明:本文为u011277745原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。