您的位置:首页 > 其它

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

2017-03-17 09:06 477 查看
附上购物车表,订单表和订单商品表字段

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;
}

----------------------------------------------------结束------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: