实验内容:
1.搭建新蜂商城的newbee_mall_db_v2数据库,并给出mysql中数据库的截图;
2.运行newbee-mall-api-master项目,生成Swagger的API接口文档,并给出接口文档的截图;
3.写出admin包下,自己负责分析的API的类名、主要功能、参数或注解的作用,如果代码较复杂需画出流程图;
NewBeeAdminManageUserAPI
主要功能:实现后台管理系统管理员登录、显示当前管理员的详细信息、修改管理员密码、修改管理员名称、管理员登出功能。
参数以及注解的作用:
(1)@RestController意即@ResponseBody+@Controller,@Controller的作用是声明该类是Controller层的Bean,将该类声明进入Spring容器中进行管理;@ResponseBody的作用是表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式。除此之外还支持RESTful风格的数据提交方式。
(2)@Api(value=”v1”,tags=”8-0.后台管理系统管理员模块接口”)
这是为该接口API帮助文档配置的一些参数加上了标签和值,说明了该接口为8-0.后台管理系统管理员模块接口,并且值为v1。
(3)@RequestMapping注解用来处理请求地址映射,其参数value表示对相应API及其方法的访问路径;method表示请求方式。
(4)@Resource表示能够自动注入对应类的实现类。
(5)@ResponseBody的作用是表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式。
(6)@Valid这个注解的作用是对数据进行校验。
(7)@TokenToAdminUser是一个自定义注解,该注解定义了当前用户在request中的名字。
login方法
详细功能描述:
该方法从接收到的adminLoginParm中得到管理员登录名以及密码,然后进行校验,然后在日志中返回相关信息。
参数:
参数为adminLoginParam,adminLoginParam有两个成员变量,分别为登录名和用户密码,该方法接收到adminLoginParam这个具体的实例对象后,获取其登录名和密码。
profile方法
详细功能描述:
先根据当前用户的id获取当前管理员用户的详细信息,若能成功获取,则把用户密码隐藏起来,然后再显示用户的详细信息;否则显示获取失败的信息。
参数:AdminUserToken adminUser
passwordUpdate方法
详细功能描述:
更新当前登录的管理员的密码。
参数:UpdateAdminPasswordParam adminPasswordParam,AdminUserToken adminUser
nameUpdate方法
详细功能描述:
更新当前登录的管理员的用户名。
参数:UpdateAdminNameParam adminNameParam,AdminUserToken adminUser
logout方法
详细功能描述:
退出当前用户登录。
参数:AdminUserToken adminUser
NewBeeAdminOrderAPI
主要功能:实现后台管理系统对订单的查询、查询订单的详细信息、修改订单状态为配货成功、修改订单状态为已出库、修改订单状态为商家关闭功能。
参数以及注解的作用:
(8)@RestController意即@ResponseBody+@Controller,@Controller的作用是声明该类是Controller层的Bean,将该类声明进入Spring容器中进行管理;@ResponseBody的作用是表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式。除此之外还支持RESTful风格的数据提交方式。
(9)@Api(value=”v1”,tags=”8-5.后台管理系统订单模块接口”)
这是为该接口API帮助文档配置的一些参数加上了标签和值,说明了该接口为8-0.后台管理系统订单模块接口,并且值为v1。
(10)@RequestMapping注解用来处理请求地址映射,其参数value表示对相应API及其方法的访问路径;method表示请求方式。
(11)@Resource表示能够自动注入对应类的实现类。
(12)@ResponseBody的作用是表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式。
(13)@TokenToAdminUser是一个自定义注解,该注解定义了当前用户在request中的名字。
(14)@ApiOperation是对swagger里的注解,是用来构建API文档的,其中value的值表示接口说明;notes的值是接口发布说明。
(15)@RequestParam的作用是把请求中的指定名称的参数传递给控制器中的形参赋值,required表示请求参数中是否必须提供此参数。
(16)@ApiParam可以对api文档中的字段进行描述。
(17)@PathVariable用来获取get请求路径中参数的值。
list方法:
详细功能描述:
若页码为空,或者页码的值小于1,或每页条数为空,或每页条数小于10,都返回“分页参数异常”;否则将pageNumber、pageSize、orderNo、orderStatus四个参数用HashMap封装好传递给PageQueryUtil处理,然后返回详细的查询结果。
参数:Integer pageNumber(非必填字段),Integer pageSize(非必填字段),String orderNo(非必填字段),Integer orderStatus(非必填字段),AdminUserToken adminUser
orderDetailPage
详细功能描述:
根据订单号查询订单详情。
参数:Long orderId,AdminUserToken adminUser
checkDone
详细功能描述:
如果batchIdParam这个数组为空或者长度小于1,则返回“参数异常!”错误;否则执行修改订单状态为配货成功。
参数:BatchIdParam batchIdParam, AdminUserToken adminUser
checkOut
详细功能描述:
如果batchIdParam这个数组为空或者长度小于1,则返回“参数异常!”错误;否则执行修改订单状态为已出库。
参数:BatchIdParam batchIdParam, AdminUserToken adminUser
closeOrder
详细功能描述:
如果batchIdParam这个数组为空或者长度小于1,则返回“参数异常!”错误;否则执行修改订单状态为商家关闭。
参数:BatchIdParam batchIdParam, AdminUserToken adminUser
4.写出上述API调用的Service层的接口名和实现类名、主要功能、参数或注解的作用,如果代码较复杂需画出流程图;
NewBeeAdminManageUserAPI
Service层接口名:
AdminUserService
Service层实现类名:
AdminUserServiceImpl
注解:
@Service声明这是一个Service层的接口。
@Resource表示能够自动注入对应类的实现类。
login()
主要功能:登录成功后则根据loginAdminUser的id生成一个新的token,如果之前已经存在该用户管理员的登录token,则更新该用户管理员的token;若不存在,则新建一个管理员用户的token,然后再返回;否则返回错误信息。
参数:
String userName(用户名),String password(密码)
注解:
@Override
作用:重写AdminUserService中的login()方法。
getNewToken()
主要功能:生成token
参数:String timeStr(系统当前时间),Long userId(登录用户的Id)
getUserDetailById()
主要功能:通过id获取当前登录的管理员的详细信息。
参数:Long loginUserId(当前登录的管理员的id)
updatePassword()
主要功能:
判断是否存在当前用户,即判断是否有用户处于登录状态,若无,则直接返回false;若有,则可以进行密码修改,先比较原密码是否正确,若正确,则设置新密码并修改,修改成功且清空当前的token然后返回true;若不正确,则返回false。
参数:
Long loginUserId(当前用户id),String originalPassword(原密码),String newPassword(新密码)
updateName()
主要功能:
判断是否存在当前用户,即判断是否有用户处于登录状态,若无,则直接返回false;若有,则可以进行用户名修改,设置新名称并修改,修改成功后返回true;否则,返回false。
参数:
Long loginUserId(当前用户id),String loginUserName(当前用户名),String nickName(新用户名)
logout()
主要功能:
退出当前用户登录,删除当前用户的token。
参数:Long adminUserId(当前登录用户的id)
NewBeeAdminOrderAPI
Service层接口名:
NewBeeMallOrderService
Service层实现类名:
NewBeeMallOrderServiceImpl
注解:
@Service声明这是一个Service层的接口。
@Autowired表示能够自动注入对应类的实现类。
@Override表示对Service层方法的重写。
@Transactional表示开启事务。
getNewBeeMallOrdersPage()
主要功能:
得到要查询的订单信息和筛选得到的订单总条数,然后返回前面两个参数以及页码和每页条数。
参数:PageQueryUtil pageUtil
getOrderDetailByOrderId()
主要功能:
先根据订单id查询订单表中是否存在该条数据,若不存在,则直接返回查找失败的信息;存在,则根据id到订单详情的数据表中获取订单项数据返回;若订单详情数据表中没有相关信息,则返回获取失败的信息。
参数:Long orderId
getOrderDetailByOrderNo()
主要功能:
先根据订单号查询订单表中是否存在该条数据,若不存在,则直接返回查找失败的信息;存在,则根据id到订单详情的数据表中获取订单项数据返回;若订单详情数据表中没有相关信息,则返回获取失败的信息。
参数:String orderNo,Long orderId
checkDone()
主要功能:
先查询所有传进来的订单,若订单不为空,判断其状态是否被删除或者订单状态不是已支付,则将它们的id记录起来,记为errorOrderNos。若errorOrderNos的为空,则订单状态正常,可以执行配货完成操作,修改订单状态和更新时间;否则,订单此时不可执行出库操作,若errorOrderNos的长度小于100,则返回errorOrderNos + "订单的状态不是支付成功无法执行配货完成操作",若长度大于100,则返回"你选择了太多状态不是支付成功的订单,无法执行配货完成操作";若没有查询到数据,则返回错误提示。
参数:Long[] ids
checkOut()
主要功能:
先查询所有传进来的订单,若订单不为空,判断其状态是否被删除或者订单状态不是已支付或者还未配货成功,则将它们的id记录起来,记为errorOrderNos。若errorOrderNos的为空,则订单状态正常,可以执行出库操作,修改订单状态和更新时间;否则,订单此时不可执行出库操作,若errorOrderNos的长度小于100,则返回errorOrderNos + "订单的状态不是支付成功无法执行出库操作",若长度大于100,则返回"你选择了太多状态不是支付成功或配货完成的订单,无法执行出库操作";若没有查询到数据,则返回错误提示。
参数:Long[] ids
checkOut()
主要功能:
先查询所有传进来的订单,若订单不为空,判断其状态是否被删除或者订单状态不是已完成或者已关闭,则将它们的id记录起来,记为errorOrderNos。若errorOrderNos的为空,则订单状态正常,可以执行关闭操作,修改订单状态和更新时间;否则,订单此时不可执行关闭操作,若errorOrderNos的长度小于100,则返回errorOrderNos + "订单不能执行关闭操作",若长度大于100,则返回"你选择的订单不能执行关闭操作";若没有查询到数据,则返回错误提示。
参数:Long[] ids
getMyOrders()
主要功能:
先进行数据转换,将实体类转成vo,设置订单状态中文显示值,然后封装每个订单列表对象的订单项数据,最后将NewBeeMallOrderItem对象列表转换成NewBeeMallOrderItemVO对象列表。
参数:PageQueryUtil pageUtil
cancelOrder()
主要功能:
先验证是否是当前userId下的订单,否则报错。然后再对订单状态进行判断,若符合条件的则能够成功取消订单,否则失败。
参数:String orderNo, Long userId
finishOrder()
主要功能:
先验证是否是当前userId下的订单,否则报错。然后再对订单状态进行判断,若是非出库状态下不能进行修改,最后返回相关信息。
参数:String orderNo, Long userId
paySuccess()
主要功能:
对订单状态进行判断,非待支付状态下不能进行修改。然后返回相关的处理信息。
参数:String orderNo, int payType
updateOrderInfo()
主要功能:
先判断订单信息是否为空并且 orderStatus>=0且状态为出库之前,若都满足上述条件则可以修改部分信息,否则不能修改。
参数:NewBeeMallOrder newBeeMallOrder
getOrderItems()
主要功能:
根据订单的id获取订单项数据。
参数:Long orderId
saveOrder()
主要功能:
该方法实现保存订单,先检查是否包含已下架商品,若有则提示商品已下架,无法生成订单;然后判断商品库存,若查出的商品不存在购物车中的这条关联商品数据或者存在数量大于库存的情况,则直接返回错误。若都符合下单的条件,则生成订单号,保存订单,计算订单总价,然后生成订单项并保存订单项记录,最后保存到数据库中。所有操作成功后,将订单号返回,以供Controller方法跳转到订单详情。
参数:
MallUser loginMallUser, MallUserAddress address,
List<NewBeeMallShoppingCartItemVO> myShoppingCartItems
5.写出上述Service实现类调用的mapper层的接口名和对应mapper.sql文件、主要功能、参数或注解的作用,对较复杂的方法需画出流程图;
(1)AdminUserMapper
Mapper.xml文件:AdminUserMapper.xml
Login
SQL语句:
select
<include refid="Base_Column_List" />
from tb_newbee_mall_admin_user
where login_user_name = #{userName,jdbcType=VARCHAR} AND login_password=#{password,jdbcType=VARCHAR} AND locked = 0
功能:根据用户名和密码查找数据库中的tb_newbee_mall_admin_user表是否存在该管理员。
参数:
Username,password
注解:
@Param:表示对应的数据表中的字段名
selectByPrimaryKey
SQL语句:
select
<include refid="Base_Column_List" />
from tb_newbee_mall_admin_user
where admin_user_id = #{adminUserId,jdbcType=BIGINT}
功能:根据用户登录的id查找数据库的adminUser中是否存在这个用户。
参数:adminUserId
updateByPrimaryKeySelective
SQL语句:
<update id="updateByPrimaryKeySelective" parameterType="ltd.newbee.mall.entity.AdminUser">
update tb_newbee_mall_admin_user
<set>
<if test="loginUserName != null">
login_user_name = #{loginUserName,jdbcType=VARCHAR},
</if>
<if test="loginPassword != null">
login_password = #{loginPassword,jdbcType=VARCHAR},
</if>
<if test="nickName != null">
nick_name = #{nickName,jdbcType=VARCHAR},
</if>
<if test="locked != null">
locked = #{locked,jdbcType=TINYINT},
</if>
</set>
where admin_user_id = #{adminUserId,jdbcType=BIGINT}
</update>
功能:更新管理员的信息
参数:adminUser
(2)NewBeeAdminUserTokenMapper
Mapper.xml文件:NewBeeAdminUserTokenMapper.xml
insertSelective
SQL语句:
<insert id="insertSelective" parameterType="ltd.newbee.mall.entity.AdminUser">
insert into tb_newbee_mall_admin_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="adminUserId != null">
admin_user_id,
</if>
<if test="loginUserName != null">
login_user_name,
</if>
<if test="loginPassword != null">
login_password,
</if>
<if test="nickName != null">
nick_name,
</if>
<if test="locked != null">
locked,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="adminUserId != null">
#{adminUserId,jdbcType=BIGINT},
</if>
<if test="loginUserName != null">
#{loginUserName,jdbcType=VARCHAR},
</if>
<if test="loginPassword != null">
#{loginPassword,jdbcType=VARCHAR},
</if>
<if test="nickName != null">
#{nickName,jdbcType=VARCHAR},
</if>
<if test="locked != null">
#{locked,jdbcType=TINYINT},
</if>
</trim>
</insert>
功能:向数据表中插入一条管理员token的记录。
参数:adminUserToken
updateByPrimaryKeySelective
SQL语句:
<update id="updateByPrimaryKeySelective" parameterType="ltd.newbee.mall.entity.AdminUser">
update tb_newbee_mall_admin_user
<set>
<if test="loginUserName != null">
login_user_name = #{loginUserName,jdbcType=VARCHAR},
</if>
<if test="loginPassword != null">
login_password = #{loginPassword,jdbcType=VARCHAR},
</if>
<if test="nickName != null">
nick_name = #{nickName,jdbcType=VARCHAR},
</if>
<if test="locked != null">
locked = #{locked,jdbcType=TINYINT},
</if>
</set>
where admin_user_id = #{adminUserId,jdbcType=BIGINT}
</update>
功能:更新原来数据库中对应的管理员token。
参数:adminUserToken
deleteByPrimaryKey
SQL语句:
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from tb_newbee_mall_admin_user_token
where admin_user_id = #{adminUserId,jdbcType=BIGINT}
</delete>
功能:根据当前用户的Id删除当前用户的token。
参数:loginUserId
(3)NewBeeMallOrderMapper
Mapper.xml文件:NewBeeMallOrderMapper.xml
findNewBeeMallOrderList
SQL语句:
<select id="findNewBeeMallOrderList" parameterType="Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tb_newbee_mall_order
<where>
<if test="orderNo!=null and orderNo!=''">
and order_no = #{orderNo}
</if>
<if test="userId!=null and userId!=''">
and user_id = #{userId}
</if>
<if test="payType!=null and payType!=''">
and pay_type = #{payType}
</if>
<if test="orderStatus!=null">
and order_status = #{orderStatus}
</if>
<if test="isDeleted!=null and isDeleted!=''">
and is_deleted = #{isDeleted}
</if>
<if test="startTime != null and startTime.trim() != ''">
and create_time > #{startTime}
</if>
<if test="endTime != null and endTime.trim() != ''">
and create_time < #{endTime}
</if>
</where>
order by create_time desc
<if test="start!=null and limit!=null">
limit #{start},#{limit}
</if>
</select>
功能:
能够根据限定的条件对tb_newbee_mall_order表的数据进行查询。
参数:pageUtil
getTotalNewBeeMallOrders
SQL语句:
<select id="getTotalNewBeeMallOrders" parameterType="Map" resultType="int">
select count(*) from tb_newbee_mall_order
<where>
<if test="orderNo!=null and orderNo!=''">
and order_no = #{orderNo}
</if>
<if test="userId!=null and userId!=''">
and user_id = #{userId}
</if>
<if test="payType!=null and payType!=''">
and pay_type = #{payType}
</if>
<if test="orderStatus!=null">
and order_status = #{orderStatus}
</if>
<if test="isDeleted!=null and isDeleted!=''">
and is_deleted = #{isDeleted}
</if>
<if test="startTime != null and startTime.trim() != ''">
and create_time > #{startTime}
</if>
<if test="endTime != null and endTime.trim() != ''">
and create_time < #{endTime}
</if>
</where>
</select>
功能:
统计根据条件筛选tb_newbee_mall_order表后得到的记录总数。
参数:pageUtil
selectByPrimaryKey
SQL语句:
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tb_newbee_mall_order
where order_id = #{orderId,jdbcType=BIGINT}
</select>
功能:根据订单id查询tb_newbee_mall_order表中是否存在相关订单记录。
参数:Long orderId
selectByOrderNo
SQL语句:
<select id="selectByOrderNo" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tb_newbee_mall_order
where order_no = #{orderNo,jdbcType=VARCHAR} and is_deleted=0 limit 1
</select>
功能:根据订单号查询tb_newbee_mall_order表中是否存在相关订单记录。
参数:orderNo
selectByPrimaryKeys
SQL语句:
<select id="selectByPrimaryKeys" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tb_newbee_mall_order
where order_id in
<foreach collection="orderIds" item="item" index="index"
open="(" separator="," close=")">#{item}
</foreach>
</select>
功能:根据订单id查找tb_newbee_mall_order表中的记录。
参数:Arrays.asList(ids)
checkDone
SQL语句:
<update id="checkDone">
update tb_newbee_mall_order
set order_status = 2,update_time = now()
where order_id in
<foreach collection="orderIds" item="item" index="index"
open="(" separator="," close=")">#{item}
</foreach>
</update>
功能:根据订单的id修改订单的状态为“配货成功”以及更新时间。
参数:Arrays.asList(ids)
checkOut
SQL语句:
<update id="checkOut">
update tb_newbee_mall_order
set order_status = 3,update_time = now()
where order_id in
<foreach collection="orderIds" item="item" index="index"
open="(" separator="," close=")">#{item}
</foreach>
</update>
功能:根据订单的id修改订单的状态为“已出库”以及更新时间。
参数:Arrays.asList(ids)
closeOrder
SQL语句:
<update id="closeOrder">
update tb_newbee_mall_order
set order_status = #{orderStatus},update_time = now()
where order_id in
<foreach collection="orderIds" item="item" index="index"
open="(" separator="," close=")">#{item}
</foreach>
</update>
功能:根据订单id修改订单状态为“商家关闭”。
参数:Arrays.asList(ids)
updateByPrimaryKeySelective
SQL语句:
<update id="updateByPrimaryKeySelective" parameterType="ltd.newbee.mall.entity.NewBeeMallOrderItem">
update tb_newbee_mall_order_item
<set>
<if test="orderId != null">
order_id = #{orderId,jdbcType=BIGINT},
</if>
<if test="goodsId != null">
goods_id = #{goodsId,jdbcType=BIGINT},
</if>
<if test="goodsName != null">
goods_name = #{goodsName,jdbcType=VARCHAR},
</if>
<if test="goodsCoverImg != null">
goods_cover_img = #{goodsCoverImg,jdbcType=VARCHAR},
</if>
<if test="sellingPrice != null">
selling_price = #{sellingPrice,jdbcType=INTEGER},
</if>
<if test="goodsCount != null">
goods_count = #{goodsCount,jdbcType=INTEGER},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
</set>
where order_item_id = #{orderItemId,jdbcType=BIGINT}
</update>
功能:能够根据条件更新数据库中tb_newbee_mall_order_item
表的信息。
参数:newBeeMallOrder
insertSelective
SQL语句:
<insert id="insertSelective" useGeneratedKeys="true" keyProperty="orderId"
parameterType="ltd.newbee.mall.entity.NewBeeMallOrder">
insert into tb_newbee_mall_order
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="orderId != null">
order_id,
</if>
<if test="orderNo != null">
order_no,
</if>
<if test="userId != null">
user_id,
</if>
<if test="totalPrice != null">
total_price,
</if>
<if test="payStatus != null">
pay_status,
</if>
<if test="payType != null">
pay_type,
</if>
<if test="payTime != null">
pay_time,
</if>
<if test="orderStatus != null">
order_status,
</if>
<if test="extraInfo != null">
extra_info,
</if>
<if test="isDeleted != null">
is_deleted,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="orderId != null">
#{orderId,jdbcType=BIGINT},
</if>
<if test="orderNo != null">
#{orderNo,jdbcType=VARCHAR},
</if>
<if test="userId != null">
#{userId,jdbcType=BIGINT},
</if>
<if test="totalPrice != null">
#{totalPrice,jdbcType=INTEGER},
</if>
<if test="payStatus != null">
#{payStatus,jdbcType=TINYINT},
</if>
<if test="payType != null">
#{payType,jdbcType=TINYINT},
</if>
<if test="payTime != null">
#{payTime,jdbcType=TIMESTAMP},
</if>
<if test="orderStatus != null">
#{orderStatus,jdbcType=TINYINT},
</if>
<if test="extraInfo != null">
#{extraInfo,jdbcType=VARCHAR},
</if>
<if test="isDeleted != null">
#{isDeleted,jdbcType=TINYINT},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
功能:根据条件将数据插入订单表。
参数:newBeeMallOrder
(4)newBeeMallOrderItemMapper
xml文件:newBeeMallOrderItemMapper.xml
selectByOrderId
SQL语句:
<select id="selectByOrderId" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tb_newbee_mall_order_item
where order_id = #{orderItemId,jdbcType=BIGINT}
</select>
功能:根据订单id查询订单详情。
参数:newBeeMallOrder.getOrderId()
selectByOrderIds
SQL语句:
<select id="selectByOrderIds" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tb_newbee_mall_order_item
where order_id
in
<foreach item="id" collection="orderIds" open="(" separator="," close=")">
#{id}
</foreach>
</select>
功能:根据订单id查询订单详情。
参数:orderIds
insertBatch
SQL语句:
<insert id="insertBatch" parameterType="ltd.newbee.mall.entity.NewBeeMallOrderItem">
insert into tb_newbee_mall_order_item (order_id, goods_id,
goods_name, goods_cover_img, selling_price,
goods_count)
values
<foreach collection="orderItems" item="orderItem" separator=",">
(#{orderItem.orderId,jdbcType=BIGINT}, #{orderItem.goodsId,jdbcType=BIGINT},
#{orderItem.goodsName,jdbcType=VARCHAR}, #{orderItem.goodsCoverImg,jdbcType=VARCHAR},
#{orderItem.sellingPrice,jdbcType=INTEGER},
#{orderItem.goodsCount,jdbcType=INTEGER})
</foreach>
</insert>
功能:向tb_newbee_mall_order_item 表中插入多条数据。
参数:newBeeMallOrderItems
(5)newBeeMallGoodsMapper
Xml文件:newBeeMallGoodsMapper.xml
selectByPrimaryKeys
SQL语句:
<select id="selectByPrimaryKeys" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tb_newbee_mall_goods_info
where goods_id in
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
order by field(goods_id,
<foreach item="id" collection="list" separator=",">
#{id}
</foreach>
);
</select>
功能:根据商品id查询商品信息。
参数:goodsIds
updateStockNum
SQL语句:
<update id="updateStockNum">
<foreach collection="stockNumDTOS" item="stockNumDTO">
update tb_newbee_mall_goods_info set stock_num = stock_num-#{stockNumDTO.goodsCount}
where goods_id = #{stockNumDTO.goodsId} and stock_num>=#{stockNumDTO.goodsCount} and goods_sell_status = 0;
</foreach>
</update>
功能:更新商品库存表中的商品数量。
参数:stockNumDTOS
(6)newBeeMallShoppingCartItemMapper
Xml文件:newBeeMallShoppingCartItemMapper.xml
deleteBatch
SQL语句:
<update id="deleteBatch">
update tb_newbee_mall_shopping_cart_item
set is_deleted=1 where cart_item_id in
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
</update>
功能:
根据购物车中商品的id批量删除商品。
参数:itemIdList
(7)newBeeMallOrderAddressMapper
Xml文件:newBeeMallOrderAddressMapper.xml
insertSelective
SQL语句:
<insert id="insertSelective" parameterType="ltd.newbee.mall.entity.NewBeeMallOrderAddress">
insert into tb_newbee_mall_order_address
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="orderId != null">
order_id,
</if>
<if test="userName != null">
user_name,
</if>
<if test="userPhone != null">
user_phone,
</if>
<if test="provinceName != null">
province_name,
</if>
<if test="cityName != null">
city_name,
</if>
<if test="regionName != null">
region_name,
</if>
<if test="detailAddress != null">
detail_address,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="orderId != null">
#{orderId,jdbcType=BIGINT},
</if>
<if test="userName != null">
#{userName,jdbcType=VARCHAR},
</if>
<if test="userPhone != null">
#{userPhone,jdbcType=VARCHAR},
</if>
<if test="provinceName != null">
#{provinceName,jdbcType=VARCHAR},
</if>
<if test="cityName != null">
#{cityName,jdbcType=VARCHAR},
</if>
<if test="regionName != null">
#{regionName,jdbcType=VARCHAR},
</if>
<if test="detailAddress != null">
#{detailAddress,jdbcType=VARCHAR},
</if>
</trim>
</insert>
功能:根据相应条件插入订单地址信息。
参数:newBeeMallOrderAddress
6.补充说明:以上接口或类实现代码中用到的一些工具类、配置类等;
工具类:
(1)Result
这是一个结果集,定义了返回的结果可以有返回码、返回信息和返回数据。
(2)ResuleGenerator
这是一个结果返回生成器,可以生成各种形式的返回结果。
(3)StringUtils
这是一个字符串工具类,是springframework封装好的,能够对字符串进行分析和处理。
(4)PageQueryUtil
这是一个订单页查询的工具类,包含了page(当前页码)、limit(每页条数)等变量,并把页码还有每页条数转为整型,方便之后获取。
(5)PageResult
对当前页面数据的一些参数的封装,其中包括列表数据、总记录数、每页记录数以及当前页数。
(6)CollectionUtils
这是一个集合工具类,是springframework封装好的,能够对集合进行分析和处理。
(7)BeanUtil
该工具类能够对bean进行操作。
配置类:
(1)Swagger2Config
对生成的API帮助文档的一些详细配置。
(2)TokenToAdminUser
设置当前的管理员用户在request中的名字。
Common类:
(1)Constants
定义了大量的常量。
(2)ServiceResultEnum
枚举了大量返回结果的提示信息。
(3)NewBeeMallOrderStatusEnum
枚举了各种订单状态。
(4)PayTypeEnum
枚举了几种订单支付状态。
(5)NewBeeMallException
抛出异常。
7.对API接口中的各个方法进行接口测试,并给出测试截图;
(1)管理员登录接口
http://localhost:8080/manage-api/v1/adminUser/login
登录失败:
登录成功:
(2)查看登录用户详细信息接口
http://localhost:8080/manage-api/v1/adminUser/profile
(3)修改管理员密码接口
http://localhost:8080/manage-api/v1/adminUser/password
(3)修改管理员名称接口
http://localhost:8080/manage-api/v1/adminUser/name
(4)退出登录接口
http://localhost:8080/manage-api/v1/logout
(6)查看订单列表接口
http://localhost:8080/manage-api/v1/orders/1
(7)查看订单详情接口
http://localhost:8080/manage-api/v1/orders
http://localhost:8080/manage-api/v1/orders?pageNumber=2&pageSize=12
(8)修改订单状态为配货成功接口
http://localhost:8080/manage-api/v1/orders/checkDone
(9)修改订单状态为已出库接口
http://localhost:8080/manage-api/v1/orders/checkOut
(10)修改订单状态为商家关闭接口
http://localhost:8080/manage-api/v1/orders/close
8.你认为系统还可以有哪些地方可以改进或优化?
(1)还应该再设置一个系统管理员注册模块。
标签:订单,order,新蜂,案例,mall,参数,jdbcType,id,商城 From: https://www.cnblogs.com/qiqi-yi/p/16949258.html